Pessoal tenho um array de bytes mas quero adicionar no inicio do array nao no final. Tem algum metodo que faz isso?
Adicionar no inicio do array [RESOLVIDO]
9 Respostas
Você pode informar qual a posição será inserido.
List<String> lista = new ArrayList<String>();
lista.add(0, "VALOR 1");
lista.add(0, "VALOR 2");
Isso vai fazer com que os valores sempre sejam inseridos na primeira posição.
A mesma teoria usada para adicionar um item ao final é aplicável.
Você tem um array de 10 posições todo preenchido e quer adicionar um novo item ao final.
Cria um array de 11 posições, copia os 10 itens e adiciona seu item ao final.
Para adicionar no começo, é só fazer o inverso, primeiro o novo item e depois os antigos.
A classe System tem o método estático arraycopy (sim, não é camelCase, que pode te ajudar)
Você precisa usar System.arraycopy para deslocar os bytes e então copiar os bytes que você quis inserir.
List<String> lista = new ArrayList<String>();
lista.add(0, "VALOR 1");
lista.add(0, "VALOR 2");
assim eu nao perderia oque tem na zero?
List<String> lista = new ArrayList<String>(); lista.add(0, "VALOR 1"); lista.add(0, "VALOR 2");
assim eu nao perderia oque tem na zero?
Sim.
Não. Isso vai fazer que os valores sejam deslocados.
Vai perder se você usar o set
lista.set(0,"VALOR");
Assim o valor é substituído.
Não. Isso vai fazer que os valores sejam deslocados.Vai perder se você usar o set
lista.set(0,"VALOR");Assim o valor é substituído.
Olha só, me equivoquei, realmente os valores são deslocados
Isso que dá responder na pressa. Se puder usar ArrayList, pode ser uma boa pedida, agora não sei se é costume, mas trabalhando com bytes eu prefiro usar o arraycopy
testei aqui e realmente funciona… facil facil vlw mesmo cara
class TesteInsercaoBytes {
private static void printBytes(String msg, byte[] bytes) {
System.out.println (msg);
for (int i = 0; i < bytes.length; ++i) { System.out.print (bytes[i] + ", "); }
System.out.println();
}
public static void main (String[] args) {
byte[] bytes = {1, 2, 3, 4, 5, 8, 7, 8, 9};
printBytes ("Array Bytes:", bytes);
byte[] bytesAInserirNoInicio = {100, 101, 102, 103};
printBytes ("Bytes a inserir no inicio:", bytesAInserirNoInicio);
byte[] arrayResultante = new byte[bytes.length + bytesAInserirNoInicio.length];
System.arraycopy (bytesAInserirNoInicio, 0, arrayResultante, 0, bytesAInserirNoInicio.length);
System.arraycopy (bytes, 0, arrayResultante, bytesAInserirNoInicio.length, bytes.length);
printBytes ("Array resultante: ", arrayResultante);
}
}
Exemplo da saída:
Array Bytes:
1, 2, 3, 4, 5, 8, 7, 8, 9,
Bytes a inserir no inicio:
100, 101, 102, 103,
Array resultante:
100, 101, 102, 103, 1, 2, 3, 4, 5, 8, 7, 8, 9,