Java: Percorrendo coleções com Java 5

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.

This entry was posted in Java. Bookmark the permalink.

3 Responses to Java: Percorrendo coleções com Java 5

  1. Walter Cruz says:

    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 :)

  2. Se eu disser que não foi coincidência, vai perder a graça? ;)

  3. Walter Cruz says:

    Hahaha… perde não :)

Leave a Reply

Your email address will not be published. Required fields are marked *