Redimensionar um array
Como redimensionar um array? Antes mais aconselho a darem uma vista de olhos pela
Collections framework e verem se há algo que satisfaça os requisitos (e.g. ArrayList
. Não há? Então vamos a isto:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//Defino um array com 4 elementos
String[] names = new String[4];
names[0] = "ana";
names[1] = "ines";
names[2] = "carolina";
names[3] = "alice";
/**
* Mas agora por alguma razao recebo a informacao
* de que preciso mais um nome
* A solucao e realocar o array, criando uma estrutura dinamica
*/
String anotherName = "sofia";
//Criar um array temporario
String[] tmp = new String[names.length + 1];
//Copiar o array names para o array tmp
System.arraycopy(names, 0, tmp, 0, names.length);
//Copiar a referencia do array tmp para o array names
names = tmp; //o array tmp esta pronto para ser garbage collected
//A ultima casa do array names esta vazia.Adicionar a String
names[names.length-1] = anotherName;
//Vamos ver o resultado
for(String name: names)
System.out.println(name);
}
}
O resultado é o esperado:
ana
ines
carolina
alice
sofia
Nota final: esta técnica funciona bem para estruturas lineares simples mas para
estruturas mais complexas aconselho vivamente o uso de ArrayList
Em vez de System.arraycopy() poderia ter utilizado um ciclo
for mas System.arraycopy() é mais
rápido por ser implementado em código nativo.