Java 2 Collections Framework

Slides:



Advertisements
Apresentações semelhantes
Python: Listas Claudio Esperança.
Advertisements

Python: Dicionários Claudio Esperança.
Object Definifion Language - ODL
Estudo de Caso, modelo Oracle 10g
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Padrão de Projeto Iterator
Programação Orientada a Objetos*
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Walfredo Cirne walfredo.dsc.ufpb.br
Polimorfismo e Classes Abstratas Profa
Interfaces em Java1 Interfaces Prof. Ricardo Linden.
Hibernate Apresentação
A linguagem C#.
Métodos Programação II
Métodos Programação II
Estruturas Hierárquicas (Árvores Binárias)
Classes e objetos Arrays e Sobrecarga
Curso de extensão em Desenvolvimento Web
Universidade do Vale do Rio dos Sinos - São Leopoldo -
P YTHON : T IPO L ISTA George Gomes Cabral. L ISTAS São arranjos seqüenciais de informações mais simples Caracterizam-se por permitir o acesso eficiente.
Sincronização de Threads
Departamento de Estatística e Informática
Professor: Hyggo Almeida
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Terceiro Trabalho Prático de GTI
Hashing - Espalhamento
Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System.
Os métodos equals() e hashCode()
Coleções em Java Vitor Brandi Junior
Pilhas Profa. Nádia Félix.
Módulo I Capítulo 5: Vetores
Tipos Especiais de Listas
POO Interface Gráfica - Swing
Java Kickstart, day 2 Semelhanças com linguagem C.
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.
Principais Pacotes e Coleções
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
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,
Java 5 – Novos recursos Jobson Ronan
April 05 Prde. Ismael H. F. Santos - 1 Modulo II – Tópicos em Java – Collections Prde. Ismael H F Santos.
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Coleções em Java - Parte 2
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.
POO - I PROF.: JEAN CARLO MENDES
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.
Tecgraf PUC-Rio maio de 2011 Mapeamento de IDL para Java.
 A linguagem Java tem diversas classes para a manipulação dos conjuntos de dados. Esses dados podem ser organizados de duas maneiras diferentes: ◦ Vetores.
Coleções em Java (Parte 1)
Array e ArrayList LPOO – 01/09/14.
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
COLEÇÕES Dilvan Moreira (baseado no livro Big Java)
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
Minicurso Java Básico Ruddá Beltrão | Cristian Costa.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
1 Paradigmas de Linguagem de Programação Java 5.0 Elifrancis Soares Diego Madruga Igor Cavalcanti Rafael Duarte Prof.: Augusto Sampaio.
Aplicativos para Web Collections Prof. Odair
Introdução Java.
Programação Orientada a Objetos
Capítulo 20 Coleções genéricas
Coleções em Java 1.
A interface java.util.List
Transcrição da apresentação:

Java 2 Collections Framework Leonardo Cole Neto

Roteiro Introdução Interfaces Implementações Algoritmos Customizando Implementações Resolvendo Problemas Comuns

Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade Usadas para armazenar, recuperar e manipular elementos que formam um grupo natural. Ex.: Vector, Hashtable, array (JDK 1.1)

Collections Framework Conjunto de interfaces, implementações e algoritmos Vantagens Reduz esforço de programação Aumenta velocidade e qualidade na programação Permite interoperabilidade entre API´s Reduz esforço para aprender uma nova API Reduz esforço para criar uma nova API Promove reuso

Interfaces

Interfaces São utilizadas sempre que possível Permite polimorfismo Parâmetros de métodos Retorno dos métodos Permite polimorfismo Existem operações opcionais UnsupportedOperationException

Collection Raiz da hierarquia Grupo mais genérico de elementos Não garante nas implementações Duplicatas Ordenação Não possui nenhuma implementação direta Iterator, extrutura de navegação next, hasNext, remove(optional)

Collection public interface Collection { // Basic Operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object 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 // Array Operations Object[] toArray(); Object[] toArray(Object a[]); }

Set Extends Collection Não contém duplicatas Não garante ordem entre os elementos Não acrescenta métodos Caracterização de tipo Operações Subconjunto (containsAll) União (addAll) Intercessão (reatinaAll) Diferença (removeAll)

List Extends Collection Coleção ordenada (Sequência) Pode ter duplicatas Controle na posição de inserção ou remoção Acesso aos elementos pelo índice ListIterator hasPrevious,previous, nextIndex, previousIndex

List public interface List extends Collection { // Positional Access Object get(int index); Object set(int index, Object element); // Optional void add(int index, Object element); // Optional Object remove(int index); // Optional abstract boolean addAll(int index, Collection c); // Optional // Search int indexOf(Object o); int lastIndexOf(Object o); // Iteration ListIterator listIterator(); ListIterator listIterator(int index); // Range-view List subList(int from, int to); }

Map Mapeamento de chaves em valores Não possui chaves duplicadas Cada chave leva a somente um elemento Para uma busca efetiva, o objeto da chave deve reimplementar os métodos: hashCode equals

Map public interface Map { // Basic Operations Object put(Object key, Object value); Object get(Object key); Object remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty(); // Bulk Operations void putAll(Map t); void clear(); // Collection Views public Set keySet(); public Collection values(); public Set entrySet(); // Interface for entrySet elements public interface Entry { Object getKey(); Object getValue(); Object setValue(Object value); }

Ordenação de Objetos java.lang.Comparable java.util.Comparator Ordem natural compareTo(object) java.util.Comparator Provê multiplas formas de ordenação compare(object,object) Retornos Inteiro negativo = menor que Zero = iguais Inteiro positivo = maior que Não são elementos do framework, apenas estruturas complementares

Ordenação de Objetos Class Natural Ordering signed numerical Byte signed numerical Character unsigned numerical Long Integer Short Double Float BigInteger BigDecimal File system-dependent lexicographic on pathname. String lexicographic Date chronological CollationKey locale-specific lexicographic

SortedSet Extends Set Elementos ordenados de forma ascendente Algumas operações a mais para aproveitar a vantagem da ordenação public interface SortedSet extends Set { // Range-view SortedSet subSet(Object fromElement, Object toElement); SortedSet headSet(Object toElement); SortedSet tailSet(Object fromElement); // Endpoints Object first(); Object last(); // Comparator access Comparator comparator(); }

SortedMap Extends Map Mapeamento onde as chaves são ordenadas de forma ascendente. public interface SortedMap extends Map { Comparator comparator(); SortedMap subMap(Object fromKey, Object toKey); SortedMap headMap(Object toKey); SortedMap tailMap(Object fromKey); Object firstKey(); Object lastKey(); }

Implementações Hashtable x HashMap LinkedList x ArrayList x Vector                 Implementations Hash Table Resizable Array Balanced Tree Linked List Interfaces Set HashSet   TreeSet List ArrayList, Vector LinkedList Map HashMap, Hashtable TreeMap Hashtable x HashMap LinkedList x ArrayList x Vector TreeSet implements SortedSet TreeMap implements SortedMap

Wrapper implementations Collections decorator //Synchronization public static Collection synchronizedCollection(Collection c); public static Set synchronizedSet(Set s); public static List synchronizedList(List list); public static Map synchronizedMap(Map m); public static SortedSet synchronizedSortedSet(SortedSet s); public static SortedMap synchronizedSortedMap(SortedMap m); //Unmodifiable public static Collection unmodifiableCollection(Collection c); public static Set unmodifiableSet(Set s); public static List unmodifiableList(List list); public static Map unmodifiableMap(Map m); public static SortedSet unmodifiableSortedSet(SortedSet s); public static SortedMap unmodifiableSortedMap(SortedMap m);

Convenience Implementations Arrays asList binarySearch Collections nCopies (immutable) singleton (immutable)

Algoritmos Sorting Shuffling Routine Data Manipulation Collections.sort(list) Arrays.sort(array) Optimized merge sort (log n) Shuffling Collections.shuffle(list) Routine Data Manipulation Collections.reverse(list) Collections.fill(list,value) Collections.copy(detination,source) Arrays.fill(array,value) System.arrayCopy(dest,destPos,src,srcPos,length)

Algoritmos Searching Finding Extreme Values Collections.binarySearch(list,value) Arrays.binarySearch(array,value) Finding Extreme Values Collections.max(list) Collections.min(list)

Customizando Implementações Possíveis objetivos Persistência, Aplicação específica, Concorrência, Performance, Funcionalidade, Conveniência, Adaptação AbstractCollection (bag) iterator, size AbstractSet AbstractList (uses array) Positional methods AbstractSequencialList (uses linked list) listIterator, iterator AbstractMap EntrySet view, put

Resolvendo Problemas Comuns Refer to: http://java.sun.com/docs/books/tutorial/collections/problems/index.html

Referências Joshua Bloch, The Java Tutorial, Collections Framework, available at http://java.sun.com/docs/books/tutorial/collections/