COLEÇÕESDilvan Moreira(baseado no livro Big Java)
Leitura Parte do capítulo 20 (1st Edition) Parte do capítulo 22 (2nd Edition)
Objetivos
Entender: Coleções
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
Lembrando: Exemplopublic class BankAccount { public void withdraw(double amount) { if (amount > balance) { IllegalArgumentException exception = new IllegalArgumentException( "Amount exceeds balance"); throw exception; } balance = balance - amount; } . . . }
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)
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:
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:
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
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) { . . . }. . .}
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
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; }}
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
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
Collection Interface Conversão para Arrays
Object[] toArray(); <T> T[] toArray(T[] a);
Sets Coleção não ordenada de elementos
distintos
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)
Implementações de Set
List Interface Lista ordenada de elementos
(sequência), podem conter duplicatas
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);
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 ...
Implementações de Listas
<<interface>>List
LinkedListArrayList
Mapa Contém associações entre chaves e
valores
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");
Implementações de Mapas
Perguntas ?
Top Related