coleÇÕes dilvan moreira (baseado no livro big java)

26
COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Upload: vasco-jose-lencastre-paixao

Post on 07-Apr-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

COLEÇÕESDilvan Moreira(baseado no livro Big Java)

Page 2: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Leitura Parte do capítulo 20 (1st Edition) Parte do capítulo 22 (2nd Edition)

Page 3: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Objetivos

Entender: Coleções

Page 4: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Lembrando: Jogando Exceções Exceções:

Evento que interrompe o fluxo normal de instruções Não podem ser esquecidas Mandadas diretamente para um handler Jogadas através de objetos Exception para sinalizar

uma condição exceptional Não precisa salvar objetos Exception em variáveis throw new IllegalArgumentException("Amount exceeds … ");

Quando uma exceção é jogada, o método termina imediatamente Execução continua no handler da exceção

Page 5: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Lembrando: Exemplopublic class BankAccount { public void withdraw(double amount) { if (amount > balance) { IllegalArgumentException exception = new IllegalArgumentException( "Amount exceeds balance"); throw exception; } balance = balance - amount; } . . . }

Page 6: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Agrupando Objetos Podemos ter uma classe Car para

modelar carros e uma subclasse Sedan para modelar um subtipo. Mas como uma classe Tires se relaciona

com Car? Carros tem pneus, mas um pneu não é um

tipo de carro. Agregação: é uma relação partetodo

Um pneu é uma parte de carro (todo)

Page 7: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Associação Define uma relação entre classes que

permite a um objeto de uma classe mandar mensagens (e mudar o estado) de objetos de outra classe da associação.

Associação entre as classes Seminar e Course:

Page 8: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Composição Tipo de associação onde existe uma

relação partetodo entre as partes e que as parte não podem existir sem o todo.

Exemplo: Uma sala é parte de um prédio, mas não existe sala se o prédio não existir. Dedos e mãos.

Composição: Building X Room:

Page 9: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Agregação Tipo de associação onde existe uma

relação de partetodo, mas os objetos que representam o todo não possuem os objetos que representam as partes Exemplo: Uma universidade tem vários

departamentos e cada um tem vários professores. Mas se a universidade fechar, os departementos deixam de existir mas os professores não.

Agregação X Composição

Page 10: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Java Generics Programação usando genéricos

Criação de estruturas de dados que podem ser usadas com tipos diferentes

Exemplos: Java's ArrayList (e.g. ArrayList<String>) Generic class: declarada com uma variável de

tipo E A variável de tipo representa o tipo do elementopublic class ArrayList<E>{public ArrayList() { . . . }public void add(E element) { . . . }. . .}

Page 11: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Variáveis de Tipo Podem ser instanciadas com nomes de

classes ou interfacesArrayList<BankAccount>ArrayList<Measurable>

Não podem usar tipos primitivos ArrayList<double> // Errado! ArrayList<Double> // Correto

São mais seguras ArrayList<BankAccount> accounts1= new ArrayList<BankAccount>();

ArrayList accounts2 = new ArrayList(); // BankAccount objectsaccounts1.add("my savings"); // Compile-time erroraccounts2.add("my savings"); // Not detected at compile time

Page 12: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Exemplo de uma Classe Genérica public class Pair<T, S>

{ private T first; private S second;

public Pair(T firstElement, S secondElement) { first = firstElement; second = secondElement; }

public T getFirst() { return first; } public S getSecond() { return second; }}

Page 13: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Java Core Colections

Collection – Raiz, representa um grupo de objetos. Set – Coleção sem elementos duplicados ou ordem. List – Coleção ordenada (sequencia), pode ter

duplicatas Queue – Fila de objetos, geralmente FIFO Map – Objeto que mapeia chaves para valores

Page 14: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Collection Interface Operações Básicas

int size();boolean isEmpty(); boolean contains(Object element);boolean add(E element); //optional boolean remove(Object element); //optionalIterator<E> iterator();

Bulk Operationsboolean containsAll(Collection<?> c);boolean addAll(Collection<? extends E> c); //optionalboolean removeAll(Collection<?> c); //optionalboolean retainAll(Collection<?> c); //optionalvoid clear(); //optional

Page 15: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Collection Interface Conversão para Arrays

Object[] toArray(); <T> T[] toArray(T[] a);

Page 16: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Sets Coleção não ordenada de elementos

distintos

Page 17: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Set Interface Modela a abstração matemática de conjuntos Não adiciona métodos a Collection

Apenas proíbe objetos duplicados Faz as operações básicas de conjuntos

s1.contains(s2) – retorna verdadeiro se s1 é um subset de s2

s1.addAll(s2) – s1 união de s1 ∨U s2 s1.retainAll(s2) – s1 interseção de s1 ∧s2 s1.removeAll(s2) – s1 diferença entre os

conjuntos s1e s2 (assimétrica)

Page 18: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Implementações de Set

Page 19: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

List Interface Lista ordenada de elementos

(sequência), podem conter duplicatas

Page 20: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Usando Listas Métodos baseados em posição

E get(int index); E set(int index, E element); //optional boolean add(E element); //optional void add(int index, E element); //optional E remove(int index); //optional boolean addAll(int index, Collection<? extends E> c); //optional

Buscaint indexOf(Object o); int lastIndexOf(Object o);

Page 21: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Usando Listas Range

List<E> subList(int from, int to);

IteraçãoListIterator<E> listIterator(); ListIterator<E> listIterator(int index);

Algoritmos sort — ordenamento (merge sort algorithm) shuffle — permutação randômica reverse — reverte ordem da lista rotate — rotaciona todos os elementos etc ...

Page 22: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Implementações de Listas

<<interface>>List

LinkedListArrayList

Page 23: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Mapa Contém associações entre chaves e

valores

Page 24: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Usando Maps//Creating a HashMap Map<String, Color> favoriteColors = new

HashMap<String, Color>();//Adding an association favoriteColors.put("Juliet", Color.PINK); //Changing an existing association favoriteColor.put("Juliet",Color.RED); //Getting the value associated with a key ColorjulietsFavoriteColor = favoriteColors.get("Juliet"); //Removing a key and its associated valuefavoriteColors.remove("Juliet");

Page 25: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Implementações de Mapas

Page 26: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)

Perguntas ?