collection java (2/2)
DESCRIPTION
Introdução a Java CollectionTRANSCRIPT
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.