SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Mais sobre coleções

André Assad – Maurício Linhares
O que são Coleções
}    São estruturas de dados
      }    Vetores (listas)
      }    Conjuntos
      }    Pilhas
      }    Árvores binárias
      }    Tabelas de hash
}    Oferecem formas diferentes de colecionar dados com
      base em fatores como
      }    Eficiência no acesso ou na busca ou na inserção
      }    Forma de organização dos dados
      }    Forma de acesso, busca, inserção
O que fazer com uma Coleção

}    As seguintes operações são básicas para todas as
      coleções:
      }    Adicionar objetos
      }    Remover objetos
      }    Descobrir se um objeto ou um grupo de objetos faz parte de
            uma coleção
      }    Recuperar um objeto em uma coleção
      }    Iterar cada elemento de uma coleção a procura de um objeto
Java Collections API

}    Oferece uma biblioteca de classes e interfaces (no
      pacote java.util) que
      }    Implementa as principais estruturas de dados de forma
            reutilizável
      }    Oferece implementações de cursor para iteração (Iterator
            pattern) para extrair dados de qualquer estrutura usando uma
            unica interface
      }    Oferece implementações de métodos estáticos utilitários para
            manipulação de coleções e vetores
Interfaces e Implementações de
Collection
Interfaces e Implementações de Map, Set
e List
Map, Collection e Collections

}    Apesar de ser conhecida como uma Collection, Map não
      estende Collection
      }    Map não é uma Collection
}    Interface java.util.Collection
      }    É a interface estendida por Set e List
}    Classe java.util.Collections
      }    Possui vários métodos utilitários e estáticos para serem usados
            com classes
}    Referencias
      }    http://java.sun.com/j2se/1.4.2/docs/guide/collections/
      }    http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html
      }    http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html
Exemplos
●     Conjunto (interface Set)
            -    Não pode ter duplicatas
            -    Os elementos não estão ordenados nem classificados




}    Lista (interface List)
      }     Pode ter duplicatas
      }     Os elementos estão sempre ordenados
Exemplos

}    Tabelas (interface Map)
      }    Os elementos possuem um identificador único
Coleções Ordenadas e Classificadas

}    As coleções podem ser:
      }    Não-classificadas (unsorted) e não-ordenadas (unordered)
      }    Ordenadas, mas não-classificadas
      }    Ambas ordenadas e classificadas
}    As coleções nunca serão:
      }    Classificadas e não ordenadas
      }    Classificar (sorting) é um tipo específico de ordenamento
            (ordering)
Ordenamento

}    Quando uma coleção é ordenada, podemos iterar pelos
      elementos da coleção de forma ordenada NÃO-aleatória
      }    Exemplo
            }    Uma Hashtable não é ordenada, ele possui um algoritmo interno que
                  determina a ordem de inserção
            }    Um LinkedHashSet a ordem dos elementos é definida pela ordem de
                  inserção. Os elementos não podem ser inseridos num índice pre-definido
            }    Um ArrayList mantém a ordem definida pelo índice do elemento (como nos
                  arrays). Elementos podem ser inseridos num índice definido pelo
                  desenvolvedor
Classificação

}    Coleções classificadas são ordenadas pelo tipo de
      elemento que elas possuem
      }    Strings são classificados por ordem alfabetica
      }    Inteiros por ordem numerica
      }    Outros objetos dependem de implementação
      }    Se o desenvolvedor desejar implementar a sua ordem ele deve
            implementar a classe Comparable
Exemplo
import java.util.*;
public class Ordenado {
     public static void main (String[] args) {
           LinkedHashSet lhs = new LinkedHashSet();
           lhs.add("Cuiaba");
           lhs.add("Amazonas");
           lhs.add("Joao Pessoa");
           lhs.add("São Paulo");
           lhs.add("Rio de Janeiro");
           printCollection(lhs);
     }
}
import java.util.*;
public class Classificado {
     public static void main (String[] args) {
           TreeSet ts = new TreeSet();
           ts.add("Cuiaba");
           ts.add("Amazonas");
           ts.add("Joao Pessoa");
           ts.add("São Paulo");
           ts.add("Rio de Janeiro");
           printCollection(ts);
     }
}
Classificação em Java
}    Os objetos são ordenáveis pelo seu conteúdo quando
      eles implementam a interface java.util.Comparable;

}    A interface comparable define um único método, o
      método “compareTo()” que recebe um único parâmetro
      e retorna um inteiro:
      }    Ele deve retornar -1 quando o objeto passado como parâmetro
            for maior que o objeto atual;
      }    0 se ambos os objetos são equivalentes;
      }    E 1 se o objeto passado como parâmetro for menor que o
            objeto atual;
List

}    As listas possuem controle o índice, a unica diferença da lista
      para as outras coleções são os métodos de controle de indice
      }    get(int index), indexOf(), add(int index, Object obj), etc
}    Implementações de List
      }    ArrayList
            }    Considerado um array que pode crescer além da sua capacidade
                  inicial
      }    Vector
            }    Possui o mesmo comportamento do ArrayList, mas os seus métodos
                  são todos synchronized para acesso multi-thread
      }    LinkedList
            }    Os elementos são duplamente ligados uns aos outros
            }    Isso permite adição ou remoção no inicio ou fim da lista
Set

}  Os conjuntos não permitem duplicatas. Isto é verificado
    pelo equals de cada elemento
}  Implementações de Set
      }    HashSet
            }    É um conjunto não-classificado e não-ordenado. Utiliza o hashCode()
                  de cada objeto
      }    LinkedHashSet
            }    É uma versão ordenada do HashSet
      }    TreeSet
            }    É uma versão classificada do HashSet
Map
}    Map oferece identificadores únicos (chaves) para cada elemento
}    Implementações de Map
      }    HashMap
            }    Oferece uma estrutura não-classificada e não-ordenada
      }    Hashtable
            }    Possui o mesmo comportamento do HashMap, mas os seus métodos são
                  todos synchronized para acesso multi-thread
      }    LinkedHashMap
            }  Mantém a ordem de inserção dos elementos
      }    TreeMap
            }  Estrutura classificada de Map
            }  Pode-se passar um Comparator em seu construtor para se
                classificar os elementos
Percorrendo uma Coleção

}    Para se percorrer uma coleção usamos o Iterator


HashMap map = new HashMap();
map.put("um", new Coisa("um"));
map.put("dois", new Coisa("dois"));
map.put("tres", new Coisa("tres"));
(...)
Iterator it = map.values().iterator();
while(it.hasNext()) {
Coisa c = (Coisa)it.next();
System.out.println(c);
}
O que é um iterator?
}    É um padrão de projeto que define a criação de um
      objeto que sabe navegar em uma coleção, de forma que a
      implementação da coleção fique transparente para quem
      a usar;

}    Os iterators em Java são implementações da interface
      java.util.Iterator;

}    Todas as classes que implementam a interface Collection
      tem um método que retorna um Iterator para elas;
Exemplo de List

}    List possui um ListIterator, que pode acessar o inicio,
      priximo, ou o fim da lista

List lista = new ArrayList();
lista.add(new Coisa("um"));
lista.add(new Coisa("dois"));
lista.add(new Coisa("tres"));
(...)
Coisa c3 = lista.get(2); // == índice de vetor
ListIterator it = lista.listIterator();
Coisa c = it.last();
Coisa d = it.previous();
Coisa[] coisas =
(Coisa[])list.toArray(new Coisa[lista.size()]);
Set Exemplo

}    Os conjuntos não permitem duplicatas
      }    O trecho de código abaixo imprime: um, dois, tres


                  Set conjunto = new HashSet();
                  conjunto.add("um");
                  conjunto.add("dois");
                  conjunto.add("tres");
                  conjunto.add("um");
                  conjunto.add("um");

                  Iterator it = conjunto.iterator();
                  while(it.hasNext()) {
                       System.out.println(it.next());
                  }
Map Exemplo

}    Maps possuem chaves e valores


Map map = new HashMap();
map.put("um", new Coisa("um"));
map.put("dois", new Coisa("dois"));
(...)
Set chaves = map.keySet();
Collection valores = map.values();
(...)
Coisa c = (Coisa) map.get("dois");
(...)
Set pares = map.entrySet();
Iterator entries = pares.iterator();
Map.Entry one = entries.next();
String chaveOne = (String)one.getKey();
Coisa valueOne = (Coisa)one.getValue();
Which collection class allows you to grow or shrink
 its size and provides indexed access to its
elements, but whose methods are not synchronized?


A. java.util.HashSet
B. java.util.LinkedHashSet
C. java.util.List
D. java.util.ArrayList
E. java.util.Vector
Given the following,
12. TreeSet map = new TreeSet();
13. map.add("one");
14.   map.add("two");
15.   map.add("three");
16.   map.add("four");
17.   map.add("one");
18.   Iterator it = map.iterator();
19.   while (it.hasNext() ) {
20.   System.out.print( it.next() + " " );
21.   }
what is the result?
A. one two three four
B. four three two one
C. four one three two
D. one two three four one
E. one four three two one
F. The print order is not guaranteed.
Which collection class allows you to associate its
 elements with key values, and allows you to
retrieve objects in FIFO (first-in, first-out) sequence?


A. java.util.ArrayList
B. java.util.LinkedHashMap
C. java.util.HashMap
D. java.util.TreeMap
E. java.util.LinkedHashSet
F. java.util.TreeSet

Mais conteúdo relacionado

Mais procurados

Mais procurados (7)

Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Grupo2
Grupo2Grupo2
Grupo2
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 

Semelhante a Curso java 08 - mais sobre coleções

Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)rdgse
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Grails: Java produtivo e divertido
Grails: Java produtivo e divertidoGrails: Java produtivo e divertido
Grails: Java produtivo e divertidoLucas Teixeira
 
Collections Java (1/2)
Collections Java (1/2)Collections Java (1/2)
Collections Java (1/2)rdgse
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Javadanrleywillian1
 
4234 mysql
4234 mysql4234 mysql
4234 mysqlherbam
 
HashSet, TreeSet, LinkedHashSet em Java
HashSet, TreeSet, LinkedHashSet em JavaHashSet, TreeSet, LinkedHashSet em Java
HashSet, TreeSet, LinkedHashSet em JavaemanoelVenancioJusti
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysJessyka Lage
 

Semelhante a Curso java 08 - mais sobre coleções (20)

8 collections-i
8 collections-i8 collections-i
8 collections-i
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)
 
9 collections-ii
9 collections-ii9 collections-ii
9 collections-ii
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Java 14
Java 14Java 14
Java 14
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
 
Aula05
Aula05Aula05
Aula05
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Grails: Java produtivo e divertido
Grails: Java produtivo e divertidoGrails: Java produtivo e divertido
Grails: Java produtivo e divertido
 
Collections Java (1/2)
Collections Java (1/2)Collections Java (1/2)
Collections Java (1/2)
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
4234 mysql
4234 mysql4234 mysql
4234 mysql
 
Apostila php 01
Apostila php 01Apostila php 01
Apostila php 01
 
HashSet, TreeSet, LinkedHashSet em Java
HashSet, TreeSet, LinkedHashSet em JavaHashSet, TreeSet, LinkedHashSet em Java
HashSet, TreeSet, LinkedHashSet em Java
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Manipulacao de arrays
Manipulacao de arraysManipulacao de arrays
Manipulacao de arrays
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: Arrays
 

Mais de Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Maurício Linhares
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Maurício Linhares
 

Mais de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
 

Curso java 08 - mais sobre coleções

  • 1. Mais sobre coleções André Assad – Maurício Linhares
  • 2. O que são Coleções }  São estruturas de dados }  Vetores (listas) }  Conjuntos }  Pilhas }  Árvores binárias }  Tabelas de hash }  Oferecem formas diferentes de colecionar dados com base em fatores como }  Eficiência no acesso ou na busca ou na inserção }  Forma de organização dos dados }  Forma de acesso, busca, inserção
  • 3. O que fazer com uma Coleção }  As seguintes operações são básicas para todas as coleções: }  Adicionar objetos }  Remover objetos }  Descobrir se um objeto ou um grupo de objetos faz parte de uma coleção }  Recuperar um objeto em uma coleção }  Iterar cada elemento de uma coleção a procura de um objeto
  • 4. Java Collections API }  Oferece uma biblioteca de classes e interfaces (no pacote java.util) que }  Implementa as principais estruturas de dados de forma reutilizável }  Oferece implementações de cursor para iteração (Iterator pattern) para extrair dados de qualquer estrutura usando uma unica interface }  Oferece implementações de métodos estáticos utilitários para manipulação de coleções e vetores
  • 6. Interfaces e Implementações de Map, Set e List
  • 7. Map, Collection e Collections }  Apesar de ser conhecida como uma Collection, Map não estende Collection }  Map não é uma Collection }  Interface java.util.Collection }  É a interface estendida por Set e List }  Classe java.util.Collections }  Possui vários métodos utilitários e estáticos para serem usados com classes }  Referencias }  http://java.sun.com/j2se/1.4.2/docs/guide/collections/ }  http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html }  http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html
  • 8. Exemplos ●  Conjunto (interface Set) -  Não pode ter duplicatas -  Os elementos não estão ordenados nem classificados }  Lista (interface List) }  Pode ter duplicatas }  Os elementos estão sempre ordenados
  • 9. Exemplos }  Tabelas (interface Map) }  Os elementos possuem um identificador único
  • 10. Coleções Ordenadas e Classificadas }  As coleções podem ser: }  Não-classificadas (unsorted) e não-ordenadas (unordered) }  Ordenadas, mas não-classificadas }  Ambas ordenadas e classificadas }  As coleções nunca serão: }  Classificadas e não ordenadas }  Classificar (sorting) é um tipo específico de ordenamento (ordering)
  • 11. Ordenamento }  Quando uma coleção é ordenada, podemos iterar pelos elementos da coleção de forma ordenada NÃO-aleatória }  Exemplo }  Uma Hashtable não é ordenada, ele possui um algoritmo interno que determina a ordem de inserção }  Um LinkedHashSet a ordem dos elementos é definida pela ordem de inserção. Os elementos não podem ser inseridos num índice pre-definido }  Um ArrayList mantém a ordem definida pelo índice do elemento (como nos arrays). Elementos podem ser inseridos num índice definido pelo desenvolvedor
  • 12. Classificação }  Coleções classificadas são ordenadas pelo tipo de elemento que elas possuem }  Strings são classificados por ordem alfabetica }  Inteiros por ordem numerica }  Outros objetos dependem de implementação }  Se o desenvolvedor desejar implementar a sua ordem ele deve implementar a classe Comparable
  • 13. Exemplo import java.util.*; public class Ordenado { public static void main (String[] args) { LinkedHashSet lhs = new LinkedHashSet(); lhs.add("Cuiaba"); lhs.add("Amazonas"); lhs.add("Joao Pessoa"); lhs.add("São Paulo"); lhs.add("Rio de Janeiro"); printCollection(lhs); } } import java.util.*; public class Classificado { public static void main (String[] args) { TreeSet ts = new TreeSet(); ts.add("Cuiaba"); ts.add("Amazonas"); ts.add("Joao Pessoa"); ts.add("São Paulo"); ts.add("Rio de Janeiro"); printCollection(ts); } }
  • 14. Classificação em Java }  Os objetos são ordenáveis pelo seu conteúdo quando eles implementam a interface java.util.Comparable; }  A interface comparable define um único método, o método “compareTo()” que recebe um único parâmetro e retorna um inteiro: }  Ele deve retornar -1 quando o objeto passado como parâmetro for maior que o objeto atual; }  0 se ambos os objetos são equivalentes; }  E 1 se o objeto passado como parâmetro for menor que o objeto atual;
  • 15. List }  As listas possuem controle o índice, a unica diferença da lista para as outras coleções são os métodos de controle de indice }  get(int index), indexOf(), add(int index, Object obj), etc }  Implementações de List }  ArrayList }  Considerado um array que pode crescer além da sua capacidade inicial }  Vector }  Possui o mesmo comportamento do ArrayList, mas os seus métodos são todos synchronized para acesso multi-thread }  LinkedList }  Os elementos são duplamente ligados uns aos outros }  Isso permite adição ou remoção no inicio ou fim da lista
  • 16. Set }  Os conjuntos não permitem duplicatas. Isto é verificado pelo equals de cada elemento }  Implementações de Set }  HashSet }  É um conjunto não-classificado e não-ordenado. Utiliza o hashCode() de cada objeto }  LinkedHashSet }  É uma versão ordenada do HashSet }  TreeSet }  É uma versão classificada do HashSet
  • 17. Map }  Map oferece identificadores únicos (chaves) para cada elemento }  Implementações de Map }  HashMap }  Oferece uma estrutura não-classificada e não-ordenada }  Hashtable }  Possui o mesmo comportamento do HashMap, mas os seus métodos são todos synchronized para acesso multi-thread }  LinkedHashMap }  Mantém a ordem de inserção dos elementos }  TreeMap }  Estrutura classificada de Map }  Pode-se passar um Comparator em seu construtor para se classificar os elementos
  • 18. Percorrendo uma Coleção }  Para se percorrer uma coleção usamos o Iterator HashMap map = new HashMap(); map.put("um", new Coisa("um")); map.put("dois", new Coisa("dois")); map.put("tres", new Coisa("tres")); (...) Iterator it = map.values().iterator(); while(it.hasNext()) { Coisa c = (Coisa)it.next(); System.out.println(c); }
  • 19. O que é um iterator? }  É um padrão de projeto que define a criação de um objeto que sabe navegar em uma coleção, de forma que a implementação da coleção fique transparente para quem a usar; }  Os iterators em Java são implementações da interface java.util.Iterator; }  Todas as classes que implementam a interface Collection tem um método que retorna um Iterator para elas;
  • 20. Exemplo de List }  List possui um ListIterator, que pode acessar o inicio, priximo, ou o fim da lista List lista = new ArrayList(); lista.add(new Coisa("um")); lista.add(new Coisa("dois")); lista.add(new Coisa("tres")); (...) Coisa c3 = lista.get(2); // == índice de vetor ListIterator it = lista.listIterator(); Coisa c = it.last(); Coisa d = it.previous(); Coisa[] coisas = (Coisa[])list.toArray(new Coisa[lista.size()]);
  • 21. Set Exemplo }  Os conjuntos não permitem duplicatas }  O trecho de código abaixo imprime: um, dois, tres Set conjunto = new HashSet(); conjunto.add("um"); conjunto.add("dois"); conjunto.add("tres"); conjunto.add("um"); conjunto.add("um"); Iterator it = conjunto.iterator(); while(it.hasNext()) { System.out.println(it.next()); }
  • 22. Map Exemplo }  Maps possuem chaves e valores Map map = new HashMap(); map.put("um", new Coisa("um")); map.put("dois", new Coisa("dois")); (...) Set chaves = map.keySet(); Collection valores = map.values(); (...) Coisa c = (Coisa) map.get("dois"); (...) Set pares = map.entrySet(); Iterator entries = pares.iterator(); Map.Entry one = entries.next(); String chaveOne = (String)one.getKey(); Coisa valueOne = (Coisa)one.getValue();
  • 23. Which collection class allows you to grow or shrink its size and provides indexed access to its elements, but whose methods are not synchronized? A. java.util.HashSet B. java.util.LinkedHashSet C. java.util.List D. java.util.ArrayList E. java.util.Vector
  • 24. Given the following, 12. TreeSet map = new TreeSet(); 13. map.add("one"); 14. map.add("two"); 15. map.add("three"); 16. map.add("four"); 17. map.add("one"); 18. Iterator it = map.iterator(); 19. while (it.hasNext() ) { 20. System.out.print( it.next() + " " ); 21. } what is the result? A. one two three four B. four three two one C. four one three two D. one two three four one E. one four three two one F. The print order is not guaranteed.
  • 25. Which collection class allows you to associate its elements with key values, and allows you to retrieve objects in FIFO (first-in, first-out) sequence? A. java.util.ArrayList B. java.util.LinkedHashMap C. java.util.HashMap D. java.util.TreeMap E. java.util.LinkedHashSet F. java.util.TreeSet