domingo, 24 de outubro de 2010

Converter Array em Vetor

Sim isso mesmo, no lugar de "progredir" vamos "regredir" um pouco, por que não é sempre que podemos trabalhar com as melhores condições possíveis, muitas vezes também precisamos colocar a mão na sujeira e editar algum código um tanto quanto ultrapassado, que ainda trabalha com vetores.

Se você já trabalhou com vetores, mesmo que apenas na faculdade, deve saber que com eles não conseguimos manipular os dados incluindo ou excluindo, só conseguimos criar (e destruir).

Ex.: String[] meuVetor = new String[] {"A", "B", "C", "D", "E"};

Neste exemplo, criamos um vetor com 5 posições, até aqui tudo bem, podemos solicitar cada posição do vetor com a chamada meuVetor[n],  trocando "n" pela posição do vetor, é claro, no nosso caso de 0 a 4.

Mas e se for necessário, em tempo de execução, adicionar algum valor ao vetor? Não é possível fazer um"meuVetor.add()", então como fazer?
Simples! Basta trabalhar com Array, List ou Collection e jogar esse vetor no lixo!
Mas e se a aplicação nos forçar a trabalhar com vetor, caso contrário seria necessário refazer todo o código?

Simples! Basta trabalhar com Array e converter para Vetor!
Como?

Vejamos o exemplo, em javanês:

ArrayList<String> meuArray = new ArrayList<String>();
String[] meuVetor = null;

for(int i = 0; i < 10; i++){
meuArray.add("POSICAO: " + i);
}

meuVetor = meuArray.toArray(new String[meuArray.size()]);

Explicando!

A primeira e segunda linha não tem segredo, ali estão sendo criadas nossas variáveis base, um ArrayList meuArraye um vetor String[] meuVetor.
O laço "for" também não tem muita complicação, de 0 até 9 ele está inserindo valores no Array.

Na ultima linha que a mágica acontece, vamos por partes:

Primeiro, estamos vazendo meuVetor = meuArray.toArray() este método (toArray) é da própria linguagem Java, e serve exatamente para isso que precisamos, ele prepara um Array para ser convertido em Vetor, mas este método sozinho não faz muita coisa, então precisamos informar o tipo de vetor que estamos querendo, no caso é um vetor de String, então dentro do toArray basta informar new String[n]. Mas que "n"? para criar um Vetor, precisamos informar a quantidade de posições que ele terá, e para conseguir esta façanha, basta invocar o método size() do meuArray, que devolve o tamanho do array, justamente o que precisamos para iniciar o Vetor!

Simples né?!
Boa sorte!

1 comentários:

Anônimo disse...

Olá, mas só funciona para vetor do tipo String né, mas e para vetor de tipo primitivo: int? É o que estou procurando.

Postar um comentário

Alguma dúvida?

 

© 2009Java Erro | by TNB