Percorrendo coleções com Iterator

Slides:



Advertisements
Apresentações semelhantes
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Advertisements

Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Walfredo Cirne walfredo.dsc.ufpb.br
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
Professor: Hyggo Almeida
Aula Prática 4 Monitoria IP/CC (~if669).
Curso de Linguagem Java
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Gerador de Tabela-Verdade
Coleções em Java - Parte 2
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Java 5 - Novidades Gerente de Tecnologia – Vitor Costa.
POO - I PROF.: JEAN CARLO MENDES
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Coleções em Java (Parte 1)
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
COMPORTAMENTO SOFISTICADO Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Introdução à Informática com Software Livre 11:37.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Introdução Java.
Programação Orientada a Objetos
Complementos de Engenharia de Software A linguagem VDM++ (4ª parte – Funções avançadas) João Pascoal Faria
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Java: Interfaces Alcides Calsavara.
FUNDAMENTO DE PROGRAMAÇÃO
Unidade IV– Relacionamento entre Objetos
FUNDAMENTO DE PROGRAMAÇÃO
Programação Orientada a Objetos
Capítulo 20 Coleções genéricas
Python: Conjuntos Claudio Esperança.
Programação para Internet Rica
Não tem introdução vcs vai começar aprendendo: isso sempre é o que vem em primeiro no código: using System;  usa o sistema inicia ele using System.Collections.Generic;
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Pacotes Servem para organizar o código, por exemplo, agrupar classes correlatas. Vamos supor uma classe Ponto2D pertencente ao pacote formas. A classe.
LÓGICA DE PROGRAMAÇÃO Estruturas de Decisão
3.2 Sobrecarga de Métodos (Overloading)
Rosemary Silveira Filgueiras Melo
Rosemary Silveira Filgueiras Melo
DHD – Desenvolvimento em Hardware
3.1.7 Variáveis de Classe e Instância
Laboratório I Mateus Raeder.
Laboratório I Mateus Raeder.
Laboratório I Mateus Raeder.
Rosemary Silveira Filgueiras Melo
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
ALGORITMOS.
Leitura do teclado e Interface gráfica
Tipos Primitivos de Dados
Prática - BD Distribuído
Coleções em Java 1.
Ordenando Coleções A Classe Collections.
A interface java.util.List
Programação Orientada a Objetos
Constantes, Variáveis e Memória
Operadores Lógicos e Relacionais
Estruturas Condicionais
Operadores Aritméticos
UNIDADE 12 INTERFACE EM SÉRIE.
RESULUÇÃO DOS EXERCÍCIOS E
CRIAÇÃO DE SITE II AULA 2  Criação de uma página no formato Webquest,
Transcrição da apresentação:

Percorrendo coleções com Iterator

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.

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

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.

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

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.

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

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.

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); }

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

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

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

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");

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()); }

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

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;

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; }

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()) { 5. Pessoa pessoaRecuperada = (Pessoa) iteListaDePessoas.next(); 6. System.out.println(pessoaRecuperada.getNome()); 7. System.out.println(pessoaRecuperada.getEndereco()); }

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.