A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Percorrendo coleções com Iterator

Apresentações semelhantes


Apresentação em tema: "Percorrendo coleções com Iterator"— Transcrição da apresentação:

1 Percorrendo coleções com Iterator

2 Percorrendo Coleções Como percorrer os elementos de uma coleção?
Se for uma lista, podemos sempre utilizar um laço for, invocando o método get para cada elemento. Mas e se a coleção não permitir indexação? Por exemplo, um Set não possui um método para pegar o primeiro, o segundo ou o quinto elemento do conjunto, já que um conjunto não possui o conceito de “ordem” Podemos usar o enhanced-for (o “foreach”) para percorrer qualquer Collection sem nos preocupar com isso.

3 Percorrendo Coleções • Em que ordem os elementos serão acessados?
Set<String> conjunto = new HashSet<String>(); conjunto.add("java"); conjunto.add("raptor"); conjunto.add("scala"); for (String palavra : conjunto) { System.out.println(palavra); } Em que ordem os elementos serão acessados? Em um conjunto, a ordem depende da implementação da interface Set: você muitas vezes não vai saber ao certo em que ordem os objetos serão percorridos

4 Iterator Para navegar pelos objetos de uma coleção devemos utilizar o Iterator. O método iterator retorna uma estrutura que permite percorrer os elementos armazenados. Uma coleção pode ter vários Iterators.

5 Iterator Iterator permite a recuperação de todos os elementos da estrutura de dados sem se preocupar em como estes elementos estão armazenados

6 Percorrendo Coleções Toda coleção fornece acesso a um iterator, um objeto que implementa a interface Iterator, que conhece internamente a coleção e dá acesso a todos os seus elementos, como a figura baixo mostra.

7 Iterator A interface Iterator possui os métodos principais:
hasNext() – verifica se ainda existem elementos; next() – retorna o próximo elemento. remove() – remove um elemento. 7 7

8 Percorrendo Coleções O método Collection iterator obtém um Iterator de uma Collection. O método Iterator hasNext determina se uma Collection contém mais elementos. Retorna true se houver outro elemento e, false, caso contrário. O método Iterator next retorna uma referência para o próximo elemento. O método Collection contains determina se uma Collection contém um elemento especificado. O método Iterator remove o elemento atual de uma Collection.

9 Percorrendo Coleções Primeiro criamos um Iterator que entra na coleção. A cada chamada do método next, o Iterator retorna o próximo objeto do conjunto. Um iterator pode ser obtido com o método iterator() de Collection, por exemplo: Set<String> conjunto = new HashSet<String>(); conjunto.add("item 1"); conjunto.add("item 2"); conjunto.add("item 3"); Iterator<String> i = conjunto.iterator(); while (i.hasNext()) { // recebe a palavra String palavra = i.next(); System.out.println(palavra); }

10 Iterator - Exemplo com LinkedList
import java.util.*; public class ExemploLinkedList { public static void main(String[] args) { LinkedList v = new LinkedList(); for (int i = 0; i < 5; i++) { Integer valor = new Integer(i); v.add(valor); } v.add(new Integer(3)); v.add(new Integer(5)); Iterator it = v.iterator(); while (it.hasNext()) { Integer valores = (Integer)it.next(); System.out.println(valores.intValue()); } // vai imprimir 0,1,2,3,4,3,5 10

11 Percorrendo uma coleção de objetos simples
Exemplo 1 Percorrendo uma coleção de objetos simples

12 A classe ObjetoQualquer
public class ObjetoQualquer { private String nome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome;

13 Exemplo completo import java.util.*;
public class ExemploDeCollection { public static void main(String[] args) { /* * Essa é a sintaxe para criar uma coleção simples. */ Collection colecao = new ArrayList(); * Agora, vamos criar alguns objetos e fazer as atribuições. * ObjetoQualquer objeto1 = new ObjetoQualquer(); objeto1.setNome("Primeiro nome"); ObjetoQualquer objeto2 = new ObjetoQualquer(); objeto2.setNome("Segundo nome"); ObjetoQualquer objeto3 = new ObjetoQualquer(); objeto3.setNome("Terceiro nome");

14 Exemplo completo /* * O último passo é adicionar cada um dos objetos em nossa coleção. */ colecao.add(objeto1); colecao.add(objeto2); colecao.add(objeto3); * Para recuperar os objetos de uma coleção devemos utilizar um Iterator. * Veja o exemplo de sintaxe. * Observação: só existe a possibilidade de navegação para frente. Iterator iteColecao = colecao.iterator(); while (iteColecao.hasNext()) { //Conversão obrigatória. Atenção a esse detalhe!!! ObjetoQualquer objetoRecuperado = (ObjetoQualquer) iteColecao.next(); //Pronto, agora você pode utilizar o objeto que foi recuperado da maneira que quiser. System.out.println("Objeto recuperado: " + objetoRecuperado.getNome()); }

15 Navegando em uma lista de pessoas
Exemplo 2 Navegando em uma lista de pessoas

16 A classe Pessoa public class Pessoa { private String nome;
private String endereco; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; public String getEndereco() { return endereco; public void setEndereco(String endereco) { this.endereco = endereco;

17 FabricaDePessoas import java.util.*; public class FabricaDePessoas {
public Collection getListaDePessoa() { Pessoa jose = new Pessoa(); jose.setNome("Jose"); jose.setEndereco("Algum Lugar"); Pessoa carlos = new Pessoa(); carlos.setNome("Carlos"); carlos.setEndereco("Outro Lugar"); Pessoa diego = new Pessoa(); diego.setNome("Diego"); diego.setEndereco("Sua Casa"); Collection lista = new ArrayList(); lista.add(diego); lista.add(jose); lista.add(carlos); return lista; }

18 ImprimeListaDePessoas
package com.javabasico.collection; import java.util.*; public class ImprimeListaDePessoas { public static void main(String[] args) { 1. FabricaDePessoas fabrica = new FabricaDePessoas(); 2. Collection listaDePessoas = fabrica.getListaDePessoa(); 3. Iterator iteListaDePessoas = listaDePessoas.iterator(); 4. while (iteListaDePessoas.hasNext()) { Pessoa pessoaRecuperada = (Pessoa) iteListaDePessoas.next(); System.out.println(pessoaRecuperada.getNome()); System.out.println(pessoaRecuperada.getEndereco()); }

19 ImprimeListaDePessoas
Cria a nossa fábrica de objetos. Recupera a lista de pessoas da fábrica. Recupera o iterator para ler os objetos da coleção. Loop – iteração Recupera a próxima pessoa. Imprime o nome da pessoa. Imprime o endereço da pessoa.


Carregar ppt "Percorrendo coleções com Iterator"

Apresentações semelhantes


Anúncios Google