Palavras-chave: Java, Java 5, coleções, iteração, genéricos
A linguagem Java já tem mais de uma década de idade e naturalmente evoluiu neste período. Verifique se o jeito que você usa coleções está atualizado.
Antes do Java 1.2, a classe para representar arrays dinâmicos era a java.util.Vector:
Vector ps = new Vector(); ps.addElement(new Pessoa("Maria 1.1")); for (Enumeration e = ps.elements(); e.hasMoreElements();) System.out.println(((Pessoa) e.nextElement()).getNome());
O Java 1.2 trouxe as classes ArrayList, LinkedList, HashMap, HashSet, que, em conjunto com outras, formaram o Collections Framework, uma biblioteca padronizada e bastante completa para lidar com coleções de valores. Algumas das novidades:
-
Os nomes de métodos ficaram mais curtos.
-
A hierarquia de classes e interfaces está mais bem formada e útil. Por exemplo, LinkedList e ArrayList podem ser generalizadas como List.
-
Foram feitas algumas otimizações de performance. Por exemplo, ArrayList não tem todos os métodos synchronized, como Vector.
Exemplificando:
List ps = new ArrayList(); ps.add(new Pessoa("Maria 1.2")); for (Iterator i = ps.iterator(); i.hasNext();) System.out.println(((Pessoa) i.next()).getNome());
No Java 1.5 (ou Java 5), além das evoluções normais da API, houve também algumas mudanças na própria linguagem:
List<Pessoa> ps = new ArrayList<Pessoa>(); ps.add(new Pessoa("Maria 1.5")); for (Pessoa p : ps) System.out.println(p.getNome());
Como se vê, as coleções podem agora usar tipos genéricos e há uma nova estrutura de for, chamada for-each.
Portanto, se de vez em quando você ainda se encontra usando Vector, procure atualizar-se para poder evoluir junto com a linguagem daqui para frente.
O fato de você postar sobre como percorrer coleções em Java num dia e o Pablo sobre iteradores no PHP5 é uma coincidência engraçada :)
Se eu disser que não foi coincidência, vai perder a graça? ;)
Hahaha… perde não :)