Estou tentando resolver o seguinte exercício da apostila da Caelum:
“Caso a array já esteja cheia no momento de adicionar um novo funcionário, criar uma nova maior e copiar os valore. Isto é, fazer a realocação já que Java não tem isso.”
Por exemplo, criei uma primeira array com 10 posições. Consegui fazer o código para criar uma nova e copiar os valores da antiga, caso eu queira entrar com um 11º registro, assim como especificado no exercício. O problema é o seguinte: qdo vou inserir o 12º funcionário, o programa faz o processo todo novamente, pois vai utilizar o mesmo método adiciona(). Ou seja, vai acabar sobreescrevendo a segunda array criada anteriormente (acredito eu…) e o 12º funcionário vai entrar na posição 11 ao invés da 12, q seria o correto… :?
uma dica, quando for aumentar o tamanho do array, nao aumenta 1 unidade, e sim mais, assim, nao precisa toda hora ficar aumentando o tamanho dele, e copiando os valores do antigo…
ficaria:
private static final int INCREMENTO_NUMERO = 5;
private int[] aumentaArray(int[] array)
{
int[] novoArray = new int[array.length + INCREMENTO_NUMERO];
for(int i = 0; i < array.length; i++)
novoArray[i] = array[i];
return novoArray;
}
}
Desculpem a pergunta, talvez besta, mas não seria melhor definir os métodos da classe Array como static? Pelo menos não precisaria inicializar o objeto no método main, certo?
Fui…