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

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

O TAD fila O TAD fila armazena objetos arbitrários
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Walfredo Cirne walfredo.dsc.ufpb.br
Polimorfismo e Classes Abstratas Profa
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
7 Abstração Genérica Unidades genéricas e instanciação.
Métodos Programação II
Métodos Programação II
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Classes e objetos Arrays e Sobrecarga
Introdução a Programação JAVA
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Tipos Agregados Homogêneos e Listas
Professor: Hyggo Almeida
Python: Exceções, Iteradores e Geradores
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Entendendo as definições de classe
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Pilhas Profa. Nádia Félix.
Listas Simplesmente Encadeadas
Java 2 Collections Framework
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Curso de Linguagem Java
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Principais Pacotes e Coleções
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Módulo 9 Strings , Coleções e I/O
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Coleções em Java - Parte 2
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP.NET Framework.NET com C#. Orientação a Objeto parte II.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Modificadores Programação II.
POO - I PROF.: JEAN CARLO MENDES
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Iterator Professores Eduardo Bezerra –
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
JAVA – Fila ATAI.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Grupo de Estudos.Net Generics. Grupo de Estudos.Net OverView New Feature do.Net Framework 2.0 Conceito de tipo parametro Definir classe e métodos Generalização.
Estrutura de dados Pilhas e filas
Coleções em Java (Parte 1)
Array e ArrayList LPOO – 01/09/14.
Curso Básico de Android
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
MÉTODOS Dilvan Moreira (baseado no livro Big Java)
CONSTRUINDO CLASSES Dilvan Moreira (baseado no livro Big Java)
1 Paradigmas de Linguagem de Programação Java 5.0 Elifrancis Soares Diego Madruga Igor Cavalcanti Rafael Duarte Prof.: Augusto Sampaio.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Aplicativos para Web Collections Prof. Odair
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Introdução Java.
Programação Orientada a Objetos
Coleções em Java 1.
A interface java.util.List
Transcrição da apresentação:

COLEÇÕES Dilvan 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: Exemplo public 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 parte  todo  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 parte  todo 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 parte  todo, 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 )  Generic class: declarada com uma variável de tipo E  A variável de tipo representa o tipo do elemento public class ArrayList { public ArrayList() {... } public void add(E element) {... }... }

Variáveis de Tipo  Podem ser instanciadas com nomes de classes ou interfaces ArrayList  Não podem usar tipos primitivos ArrayList // Errado! ArrayList // Correto  São mais seguras ArrayList accounts1= new ArrayList (); ArrayList accounts2 = new ArrayList(); // BankAccount objects accounts1.add("my savings"); // Compile-time error accounts2.add("my savings"); // Not detected at compile time

Exemplo de uma Classe Genérica public class Pair { 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); //optional Iterator iterator();  Bulk Operations boolean containsAll(Collection c); boolean addAll(Collection c); //optional boolean removeAll(Collection c); //optional boolean retainAll(Collection c); //optional void clear(); //optional

Collection Interface  Conversão para Arrays Object[] toArray(); 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 c); //optional  Busca int indexOf(Object o); int lastIndexOf(Object o);

Usando Listas  Range List subList(int from, int to);  Iteração ListIterator listIterator(); ListIterator 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 > List LinkedListArrayList

Mapa  Contém associações entre chaves e valores

Usando Maps //Creating a HashMap Map favoriteColors = new HashMap (); //Adding an association favoriteColors.put("Juliet", Color.PINK); //Changing an existing association favoriteColor.put("Juliet",Color.RED); //Getting the value associated with a key Color julietsFavoriteColor = favoriteColors.get("Juliet"); //Removing a key and its associated value favoriteColors.remove("Juliet");

Implementações de Mapas

Perguntas ?