Quando usar Coleções - Parte III

Listas de Objetos são coleções onde elementos repetidos podem ocorrer...

Quando usar Coleções - Parte III

 

Antes de começarmos a falar sobre Iterators, vamos relembrar o conceito de Lista de Objetos.

 

Listas de Objetos são coleções onde elementos repetidos podem ocorrer e onde os elementos têm posições definidas, para simplificar, podemos afirmar que listas são como arrays com características adicionais, sendo que destas a que mais merece destaque é a capacidade de seu tamanho a ser modificado de acordo com a necessidade.

 

Já havia sido comentado no artigo anterior que a interface List declara métodos que podem ser usados para manipular listas e também sobre a existência de duas classes que implementam a interface List: ArrayList e LinkedList. Também comparamos as vantagens e desvantagens destas duas classes.

 

Após essa recapitulação vamos agora falar sobre Iterators.

 

Iterators

Quando usar Iterators ?

 

Há ocasiões (e não são poucas) em que precisamos que nosso programa percorra um a um os elementos que estão dentro de um objeto de coleção.

 

Uma boa solução para resolver essa situação é criar uma variável que varra o conjunto de elementos, montar um índice variando do primeiro elemento até o último.

 

Com isso em vez de escrever:

 

import java.util.ArrayList;

 

public class Lista3 {  

public static void main(String[] args) {

ArrayList lista2 = new ArrayList();

lista2.add("Dinardo");

lista2.add("Rosa");

lista2.add("Rafa");

lista2.add("Anderson");

lista2.add("Alex");

for (int i = 0; i < lista2.size(); i++) {

System.out.println(lista2.get(i));

}

}

}

 

Com o uso de iterators  o código ficaria assim:

 

package javaapplication1teste;

 

import java.util.ArrayList;

import java.util.Iterator;

 

public class Lista3 {  

public static void main(String[] args) {

ArrayList lista2 = new ArrayList();

lista2.add("Dinardo");

lista2.add("Rosa");

lista2.add("Rafa");

lista2.add("Pingo");

lista2.add("Alex");

           

Iterator i = lista2.iterator();

               

while(i.hasNext()) {

 System.out.println(i.next()) ;

}

}

}

 

O resultado:

Dinardo

Rosa

Rafa

Pingo

Alex

 

Provavelmente você deve estar se perguntando para que tudo isso?

 

No segundo código nós efetuamos uma iteração sobre um conjunto de elementos, dentro de um objeto de coleção, no nosso exemplo este era do Tipo ArrayList.

 

Além de percorrer elementos, o Iterator pode também remover elementos. Além disso, trata-se de uma interface que encontra implementações dentro de todos os grupos de coleções.

 

O Iterator quando usado para acessar elementos em um LinkedList tem um desempenho muito superior ao de um loop for, quando acessando elementos em um ArrayList o desempenho é similar ao de um for.

 

Outras formas de Iteração

 

ListIterator

ListIterator só é aplicado em listas, permite avançar e também retroceder, para isso utiliza-se o metódo previous().

 

A seguir veremos um exemplo de como ficaria o código anterior. Observe que no código a seguir, o ArrayList será varrido do último elemento até o primeiro:

 

// Usando listIterator

package javaapplication1teste;

import java.util.ArrayList;

import java.util.ListIterator;

 

public class Lista3 {  

public static void main(String[] args) {

ArrayList lista2 = new ArrayList();

lista2.add("Dinardo");

lista2.add("Rosa");

lista2.add("Rafa");

lista2.add("Pingo");

lista2.add("Alex");

           

ListIterator l = lista2.listIterator(lista2.size());

while(l.hasPrevious()) {

System.out.println(l.previous()) ;

}

}

}

 

O Resultado seria algo como:

Alex

Pingo

Rafa

Rosa

Dinardo

 

A primeira implementação de iteração é chamada por Enumeration, ela ocorre apenas no Vector, que por ser antigo, não é mais recomendável o seu uso.

 

No próximo artigo falaremos sobre os Objetos do tipo SET.

 

Fontes de Inspiração para este e os outros dois artigos

Introdução Á Programação Orientada  a Objetos Usando Java

Autor Rafael Santos

 

Java Como Programar 4ª Edição

Deitel e Deitel

 

Universidade Java

Franco Yoshida

Artigos relacionados