Collections Framework
Collections
Collections

Collection → Βase da hierarquia. Representa um
grupo de objetos.
List → Mantém a seqüência de inserção. Pode
armazenar elementos duplicados.
Set → Não armazena elementos duplicados.
Map → Relaciona chaves com valores. Não
armazena chaves duplicadas. Cada chave só
está associada a um valor.
Ordenação de Coleções

   Ordenação de coleções pode ser feita com o
    método Collection.sort

   Comparação entre itens
       Método equals()
                  Usado nos métodos contains() das collections
       Interfaces Comparable e Comparator
                  Para implementa-las deve-se definir o método
                    compareTo()
equals(Object obj)

public boolean equals(Object object){
      if (object == null){
          return false;
      }
      if (!(object instanceof Pessoa)){
          return false;
      }
      Pessoa pessoa = (Pessoa)object;
      return pessoa.getCpf().equals(this.cpf);
  }
compareTo()

public int compareTo(ContaPoupanca o) {
    if (this.getNumero() < o.getNumero()) {
        return -1;
    }


    if (this.getNumero() > o.getNumero()) {
        return 1;
    }
    return 0;
}
Generics

   Restringe as listas a um determinado tipo de
    objetos
   Dispensa o uso de casting
   Dá segurança ao código, permitindo inserir na
    lista apenas objeto do tipo especificado
       Exemplo:
                  Sem genérics
                      ContaCorrente cc = new ContaCorrente();
                  Com genérics
                             List<ContaCorrente> contas = new
                                   ArrayList<ContaCorrente>();
java.util.Set

   Não aceita números repetidos
   Não existem métodos que trabalham com
    indices ”get(int)”
   A ordem dos elementos na maioria das vezes
    não é a mesma da inserção dos elementos
   Desempenho nas pesquisas superior as
    implementações de List
java.Util.Set
Exemplo

   Set<String> conjunto = new HashSet<String>();
   conjunto.add("paulo");
   conjunto.add("guilherme");
   conjunto.add("thadeu");
   conjunto.add("cosen");
   conjunto.add("sergio");
   conjunto.add("guilherme"); // repetido!
   // imprime na tela todos os elementos
   System.out.println(conjunto);
Map

   Um mapa é composto por um conjunto de
    associações entre um objeto chave a um objeto
    valor
   Um mapa é muito usado para “indexar” objetos
    de acordo com determinado critério, para
    podermos buscalos rapidamente através desse
    critério
Map
Map
Exemplo

ContaCorrente c1 = new ContaCorrente();
c1.deposita(10000);
ContaCorrente c2 = new ContaCorrente();
c2.deposita(3000);
Map mapaDeContas = new HashMap();
mapaDeContas.put("diretor", c1);
mapaDeContas.put("gerente", c2);
Object elemento = mapaDeContas.get("diretor");
ContaCorrente contaDoDiretor = (ContaCorrente)
elemento;
Exercício (1/2)

 1 - Crie a classe Conta com os seguintes
atributos: int numero, String nome. Essa classe
deve implementar o a interface Comparable,
sendo que a forma de comparação deve ser por
numero.
2 - Crie outra classe que implementará
Comparator e que servirá de comparador de
nome para uma coleções de contas
Exercício (2/2)

1 - Crie uma classe Main que:
  a)Carregue um collection do tipo Arraylist com dez
    contas e imprima o conteúdo da collection.
  b)Ordene a coleção por nome usando a classe que
    implementa Comparator e imprima as contas.
  c)Ordene por número e imprima novamente.
Exercício (Extra)


   Crie uma classe em java que insere 30 mil
    números numa ArrayList e pesquise-os usando
    o método contains. Use o método
    System.currentTimeMillis() para
    cronometrar o tempo gasto.
   Troque a ArrayList por um HashSet e verifique
    o tempo que vai demorar.
Exercício (Extra)

   Gere todos os números entre 1 e 1000 e
    ordene em ordem decrescente utilizando um
    TreeSet.
   Gere todos os números entre 1 e 1000 e
    ordene em ordem decrescente utilizando um
    ArrayList.

Collection Java (2/2)

  • 1.
  • 2.
  • 3.
    Collections Collection → Βaseda hierarquia. Representa um grupo de objetos. List → Mantém a seqüência de inserção. Pode armazenar elementos duplicados. Set → Não armazena elementos duplicados. Map → Relaciona chaves com valores. Não armazena chaves duplicadas. Cada chave só está associada a um valor.
  • 4.
    Ordenação de Coleções  Ordenação de coleções pode ser feita com o método Collection.sort  Comparação entre itens  Método equals()  Usado nos métodos contains() das collections  Interfaces Comparable e Comparator  Para implementa-las deve-se definir o método compareTo()
  • 5.
    equals(Object obj) public booleanequals(Object object){ if (object == null){ return false; } if (!(object instanceof Pessoa)){ return false; } Pessoa pessoa = (Pessoa)object; return pessoa.getCpf().equals(this.cpf); }
  • 6.
    compareTo() public int compareTo(ContaPoupancao) { if (this.getNumero() < o.getNumero()) { return -1; } if (this.getNumero() > o.getNumero()) { return 1; } return 0; }
  • 7.
    Generics  Restringe as listas a um determinado tipo de objetos  Dispensa o uso de casting  Dá segurança ao código, permitindo inserir na lista apenas objeto do tipo especificado  Exemplo:  Sem genérics ContaCorrente cc = new ContaCorrente();  Com genérics List<ContaCorrente> contas = new ArrayList<ContaCorrente>();
  • 8.
    java.util.Set  Não aceita números repetidos  Não existem métodos que trabalham com indices ”get(int)”  A ordem dos elementos na maioria das vezes não é a mesma da inserção dos elementos  Desempenho nas pesquisas superior as implementações de List
  • 9.
  • 10.
    Exemplo  Set<String> conjunto = new HashSet<String>();  conjunto.add("paulo");  conjunto.add("guilherme");  conjunto.add("thadeu");  conjunto.add("cosen");  conjunto.add("sergio");  conjunto.add("guilherme"); // repetido!  // imprime na tela todos os elementos  System.out.println(conjunto);
  • 11.
    Map  Um mapa é composto por um conjunto de associações entre um objeto chave a um objeto valor  Um mapa é muito usado para “indexar” objetos de acordo com determinado critério, para podermos buscalos rapidamente através desse critério
  • 12.
  • 13.
  • 14.
    Exemplo ContaCorrente c1 =new ContaCorrente(); c1.deposita(10000); ContaCorrente c2 = new ContaCorrente(); c2.deposita(3000); Map mapaDeContas = new HashMap(); mapaDeContas.put("diretor", c1); mapaDeContas.put("gerente", c2); Object elemento = mapaDeContas.get("diretor"); ContaCorrente contaDoDiretor = (ContaCorrente) elemento;
  • 15.
    Exercício (1/2) 1- Crie a classe Conta com os seguintes atributos: int numero, String nome. Essa classe deve implementar o a interface Comparable, sendo que a forma de comparação deve ser por numero. 2 - Crie outra classe que implementará Comparator e que servirá de comparador de nome para uma coleções de contas
  • 16.
    Exercício (2/2) 1 -Crie uma classe Main que: a)Carregue um collection do tipo Arraylist com dez contas e imprima o conteúdo da collection. b)Ordene a coleção por nome usando a classe que implementa Comparator e imprima as contas. c)Ordene por número e imprima novamente.
  • 17.
    Exercício (Extra)  Crie uma classe em java que insere 30 mil números numa ArrayList e pesquise-os usando o método contains. Use o método System.currentTimeMillis() para cronometrar o tempo gasto.  Troque a ArrayList por um HashSet e verifique o tempo que vai demorar.
  • 18.
    Exercício (Extra)  Gere todos os números entre 1 e 1000 e ordene em ordem decrescente utilizando um TreeSet.  Gere todos os números entre 1 e 1000 e ordene em ordem decrescente utilizando um ArrayList.