5COP088 Laboratório de Programação

Propaganda
5COP088 – Laboratório de Programação
Aula 13 – Java
5COP088
Laboratório de Programação
Aula 13
Genéricos e Conjuntos Java
Prof. Dr. Sylvio Barbon Junior
Sylvio Barbon Jr – [email protected]
1
5COP088 – Laboratório de Programação
Aula 13 – Java
Sumário:
1) Métodos hashCode(), equals() e toString();
2) Conjuntos;
3) Genéricos;
4) Resumo.
Sylvio Barbon Jr – [email protected]
2
5COP088 – Laboratório de Programação
Aula 13 – Java
1) Métodos hashCode(), equals() e toString()
- TODAS as classes estendem Object;
- equals(), hashCode() e toString() são métodos públicos de Object;
- Sobrescreva toString() para implementar o retorno de métodos
comoSystem.out.println();
- Use o equals() para determinar se dois objetos são equivalentes;
- Quando sobrescrever o equals() use o operador instanceof para certificar-se
de que está comparando objetos de classe apropriada, exemplo:
public boolean equals( Object obj ) {
if ( obj instanceof Retangulo) {
Retangulo rect = (Retangulo) obj ;
return rect.width == width && rect.height == height ;
} else {
return false ;
Sylvio Barbon Jr – [email protected]
}}
3
5COP088 – Laboratório de Programação
Aula 13 – Java
1) Métodos hashCode(), equals() e toString()
- Quando sobrescrever equals() deve-se sobrescrever hashcode(), as classes
HashMap, HashTable, HashSet, LinkedHashSet e LinkedHashMap.
- Uma sobrescrição válida de hashCode() distribuirá chaves de forma
igualitária em vários depósitos.
2) Conjutos
- Atividades comuns: Inserção, remoção, verificação de objetos incluídos.
- Collection -> interface estendida por Set e List;
- Collections -> Uma classe que armazena métodos utilitários estáticos.
- Quatro versões básicas:
1) Lista (pode ser ordenada, com repetição e com índice);
2) Fila (Ordenados por FIFO ou por prioridade);
Sylvio Barbon Jr – [email protected]
4
5COP088 – Laboratório de Programação
Aula 13 – Java
2) Conjuntos
3) Conjunto (pode ser ordenada ou classificada e repetição Não é
permitida);
4) Mapa (pode ser ordenada ou classificada e repetição de chave NÃO é
permitida);
*ordenada = obedecendo uma ordem específica não-aleatória;
*classificada = alfabeticamente, numericamente ou por critério do
programador;
- Principais características das Classes:
1) ArrayList = iteração e acesso aleatório rápido;
2) Vector = Como um ArrayList, porém mais lento devido a métodos
sincronizados;
3) LinkedList = Adequado para a inserção de elementos ao final (pilhas e
filas);
4) HashSet = Não fornece ordenamento e assegura itens não repetidos;
Sylvio Barbon Jr – [email protected]
5
5COP088 – Laboratório de Programação
Aula 13 – Java
2) Conjuntos
5) LinkedHashSet = Sem itens duplicados e iteração por ordem de
inserção.
6) TreeSet = Sem itens duplicados itera na ordem classificada.
7) HashMap = Atualizações rápidas, permite itens nulos.
8) Hashtable = HashMap mais lento pela sincronização e não permite
valores nulos.
9) LinkedHashMap = Iterações mais rápidas, itera por ordem de inserção
ou último item acessado, permite chave e itens nulos.
10) TreeMap = HashMap classificado;
11) PriorityQueue = Lista ordenada por prioridade
- A iteração deve ser feita pelo for aprimorado ou com um Iterator (hasNext()):
for( String s : ListaStrings){
while(IteratorLista.hasNext()) {
Object elemento = IteratorLista.next();
}
}
Sylvio Barbon Jr – [email protected]
6
5COP088 – Laboratório de Programação
Aula 13 – Java
2) Conjuntos
- As filas usa:
1) offer() – para adicionar elemento;
2) poll() – para remover o primeiro da fila;
3) peek() – verifica o primeiro da fila;
- A classificação pode ser feita na ordem natural, por meio de um
Comparable ou de vários Comparators:
1) Implemente Comparable usando compareTo() e forneça uma
classificação:
public class Pessoa implements Comparable {
private int pessoa_id;
private String nome;
@Override
public int compareTo(Pessoa o) {
Pessoa p = (Pessoa ) o;
return this.pessoa_id – o.pessoa_id ;
}
Sylvio Barbon Jr – [email protected]
}
7
5COP088 – Laboratório de Programação
Aula 13 – Java
2) Conjuntos
2) Crie vários Comparators para classificar uma classe de várias
formas (compare()):
public class OrdenadorPessoa implements Comparator{
public int compare(Object o1, Object o2) {
Pessoa p1 = (Pessoa) o;
Pessoa p2 = (Pessoa) o;
return p1.getPessoaId() - p2.getPessoaId();
}
}
- A classe Collections e Arrays apresentam o método sort() para ordenação;
- A classe Arrays.asList() cria um List a partir de um array.
- Collections.reverse() inverte a ordenação dos elementos de uma lista.
Sylvio Barbon Jr – [email protected]
8
5COP088 – Laboratório de Programação
Aula 13 – Java
3) Genéricos
- Permitem garantir a segurança de tipos, delimitando o uso de uma Collection.
- Ex. ArrayList<Animal> pode aceitar referências de Cachorro, Gato ou
qualquer outro tipo de Animal.
- Não é possível realizar atribuições polimórficas, exemplo:
List<Animal> listaAnimal = new ArrayList<Cachorro>.
- Ao se usar a implementação List<?>, qualquer tipo genérico pode ser
atribuído à referência, mas apenas para acesso e não para modificações.
- Comparação:
Sylvio Barbon Jr – [email protected]
9
5COP088 – Laboratório de Programação
Aula 13 – Java
4) Resumo
Sylvio Barbon Jr – [email protected]
10
5COP088 – Laboratório de Programação
Aula 13 – Java
4) Resumo
Sylvio Barbon Jr – [email protected]
11
5COP088 – Laboratório de Programação
Aula 13 – Java
Referências
Deitel,P.; Deitel, H. Java Como Programar. 5a edição.
SCJP Certificação Sun para programador- Kathy Sierra
https://www.youtube.com/watch?v=yfcyeY-jQbI
https://www.youtube.com/watch?v=dY99vOs86Jc
Download