![Page 1: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/1.jpg)
COLEÇÕESDilvan Moreira(baseado no livro Big Java)
![Page 2: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/2.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/3.jpg)
Objetivos
Entender: Coleções
![Page 4: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/4.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/5.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/6.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/7.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/8.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/9.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/10.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/11.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/12.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/13.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/14.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/15.jpg)
Collection Interface Conversão para Arrays
Object[] toArray(); <T> T[] toArray(T[] a);
![Page 16: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/16.jpg)
Sets Coleção não ordenada de elementos
distintos
![Page 17: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/17.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/18.jpg)
Implementações de Set
![Page 19: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/19.jpg)
List Interface Lista ordenada de elementos
(sequência), podem conter duplicatas
![Page 20: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/20.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/21.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/22.jpg)
Implementações de Listas
<<interface>>List
LinkedListArrayList
![Page 23: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/23.jpg)
Mapa Contém associações entre chaves e
valores
![Page 24: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/24.jpg)
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)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/25.jpg)
Implementações de Mapas
![Page 26: COLEÇÕES Dilvan Moreira (baseado no livro Big Java)](https://reader031.vdocuments.com.br/reader031/viewer/2022020722/570638701a28abb823907528/html5/thumbnails/26.jpg)
Perguntas ?