Array de int

Galera criei o seguinte array de inteiros

in intTest[] = new int[40];

Como podem ver , este meu array de inteiros tem 40 posições, supomos que utilizei somente 10 posições deste array. Só que meu problema esta em saber quantas posições foram ocupadas,por acaso eu criar um laço quero que somente seja acessado as posições utilizadas.

Alguma dica?

[]'s
Marcelo Alves

Quando você cria um array de int com 40 posições, todas as 40 posições estão cheias, e com zeros.

Não há “posições vazias”. A menos que você diga que um valor especial (por exemplo, -1, ou mesmo 0) representa “vazio”.

Normalmente você precisa criar uma variável auxiliar (do tipo “int”) que indique quantas posições estão cheias, ou a partir da qual as posições estão vazias.

E se ao invés de ser do tipo int fosse do um objeto de array? daria pra usar iterator?

[]'s
Marcelo

Se você tem uma estrutura de dados adequada, você não precisa se preocupar com posições vazias.
Note que mesmo “null” (que é o valor padrão quando se cria um array de Object ou de qualquer outra classe) pode ser significativo para o problema em questão.
Evite usar arrays nesse caso, e prefira ArrayList.
No caso de um ArrayList é possível usar Iterator, mas normalmente não se usa nesse caso (porque o acesso indexado é mais rápido). Use um Iterator se a estrutura assim o requerer (como um LinkedList, ou uma outra collection como um Set ou Map).

Utilize arrayList , ou ao inves de int Use Integer dai da para vc contar quantos objetos sao diferentes de null,
que sera o valor padrão definido para o array.

A partir do java 5 prefira for each a Iterator…

abraços!

Como foi já dito aqui, você pode usar um List, ou você pode fazer um Array de Integer, aí sim você pode ver se a posição x é nula ou não!


Integer i = new Integer[5];
if (i[o] == null) {
    i[0] = 2;//esse código funciona java 5 >, para o java 4 < seria necessário Integer.valueOf(2);
}


System.out.println(i[0] == null);
System.out.println(i[1] == null);


Se o sei array pode variar o tamanho, e você não tem conhecimento do tamanho no momento de instanciar o array, então opte por uma collection List (arraylist, linkedlist…)…