Opa, Marcos! Boa! =)
Só toma cuidado com uma coisa... Imagina que você adicionou 10 elementos, o que vai acontecer? Do jeito que o código está?
Depois do 10º, totalItens
será igual a 10 e, quando for adicionar o próximo, ao invés de tentar criar um novo array, ele tentará adicionar o novo item nesse array e você deve tomar uma Exception
... =|
Então, o que você precisa fazer, é começar com a verificação:
private int totalItens = 0;
private Item[] vetorItem = new Item[10];
public void adiciona(Item item) {
if (totalItens == vetorItem.length) {
// Cria novo array...
}
vetorItem[totalItens] = item;
totalItens++;
}
Agora, repare que só queremos criar um novo array, então podemos começar criando um vetor auxiliar:
// Código anterior omitido...
if (totalItens == vetorItem.length) {
Item[] vetorAuxiliar = new Item[2 * totalItens];
// E agora?
}
// Código posterior omitido...
Feito isso, queremos copiar tudo que temos em vetorItem
para o novo vetor... Para isso, um simples for
deve resolver. =)
// Código anterior omitido...
if (totalItens == vetorItem.length) {
Item[] vetorAuxiliar = new Item[2 * totalItens];
for (int i = 0; i < vetorItem.length; i++) {
vetorAuxiliar[i] = vetorItem[i];
}
// E agora?
}
// Código posterior omitido...
Para finalizar, queremos que nosso vetorItem
comece a utilizar o vetorAuxiliar
:
// Código anterior omitido...
if (totalItens == vetorItem.length) {
Item[] vetorAuxiliar = new Item[2 * totalItens];
for (int i = 0; i < vetorItem.length; i++) {
vetorAuxiliar[i] = vetorItem[i];
}
vetorItem = vetorAuxiliar;
}
// Código posterior omitido...
Acredito que fazendo isso resolvemos o problema! Você poderia testar e nos dar um feedback se resolver ou não, o seu problema? =)
Espero ter ajudado,
Fábio