Tenho uma dúvida mas numca tive coragem de perguntar.
Pra recuperar os valores de uma colection, eu a transformo em uma classe concreta que implementa collection e uso um for. Mas tem também o iterate que não costumo usar.
Qual a melhor forma de recuperar um valor de uma collection: iterando ou usando simplesmente um loop?
Eu acho que deve existir uma estrutura mais complexa que um simples for dentro do iterator mas, de qualquer forma, se o Java já te dá uma forma de percorrer sua lista de maneira simples, não tem porque ficar reinventando a roda né.
Como assim, você faz isto?
ArrayList lista = (ArrayList) collection;
Só dá para fazer isso se você souber de antemão que a collection é um ArrayList. Mas não é a maneira recomendada.
Normalmente você usaria um Iterator:
for (Iterator it = collection.iterator(); it.hasNext(); ) {
Object obj = it.next(); // isso se você não souber que tipo de elementos tem a sua collection
}
Se você, por outro lado, souber que a collection é um ArrayList, pode usar o loop com contador (mas só se você for excessivamente neurótico quanto a velocidade - é 0,01% mais rápido, o que normalmente não vale a pena)
if (collection instanceof ArrayList) {
List lista = (List) collection;
for (int i = 0; i < lista.size(); ++i) {
Object obj = lista.get(i);
}
} else {
for (Iterator it = collection.iterator(); it.hasNext(); ) {
Object obj = it.next(); //
}
}