Adicionar no inicio do array [RESOLVIDO]

9 respostas
denisspitfire

Pessoal tenho um array de bytes mas quero adicionar no inicio do array nao no final. Tem algum metodo que faz isso?

9 Respostas

RRaminelli

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.

Rodrigo_Sasaki

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)

E

Você precisa usar System.arraycopy para deslocar os bytes e então copiar os bytes que você quis inserir.

denisspitfire

List<String> lista = new ArrayList<String>(); lista.add(0, "VALOR 1"); lista.add(0, "VALOR 2");
assim eu nao perderia oque tem na zero?

Rodrigo_Sasaki

denisspitfire:
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.

RRaminelli

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.

Rodrigo_Sasaki

RRaminelli:
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 :slight_smile:

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

denisspitfire

testei aqui e realmente funciona… facil facil vlw mesmo cara

E
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,
Criado 4 de dezembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 9
Participantes 4