Programação Java - Collections Marco Fagundes [email protected] © 2007 Marco Fagundes - [email protected] 1 Tópicos Collections Tipos Genéricos Exercício © 2007 Marco Fagundes - [email protected] 2 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) © 2007 Marco Fagundes - [email protected] 3 A API Collections A API Collection contém interfaces que agrupam os objetos como uma: Coleção(Collection) – um grupo de objetos. Ordenamento e permissão de duplicatas depende de cada implementação Conjunto(Set) – Um coleção sem ordenação e sem duplicatas Lista(List) – coleção sem ordenação. Duplicatas são permitidas. © 2007 Marco Fagundes - [email protected] 4 Collections Os elementos de uma Collection são do tipo Object (Caso não se utilize tipos genéricos) Qualquer tipo abstrato pode ser armazenado em Collections Tipos primitivos não são permitidos – as classes empacotadoras devem ser usadas no lugar de tipos primitivos É necessário fazer o cast correto antes de usar um objeto retirado de uma collection (Caso não se utilize tipos genéricos) © 2007 Marco Fagundes - [email protected] 5 Collections Conjunto de interfaces, implementações e algoritmos Interfaces © 2007 Marco Fagundes - [email protected] 6 Implementações Hashtable x HashMap LinkedList x ArrayList x Vector TreeSet implements SortedSet TreeMap implements SortedMap © 2007 Marco Fagundes - [email protected] 7 Tipos Genéricos A partir do J2SE 5.0 A API Collections API fornece funcionalidades comuns para LinkedLists, ArrayLists and HashMaps que podem ser usadas para mais de um tipo Exemplo na versão 1.4: ArrayList list = new ArrayList(); list.add(0, new Integer(42)); int total = ((Integer)list.get(0)).intValue(); © 2007 Marco Fagundes - [email protected] 8 Tipos Genéricos Na última linha, o cast para Integer é necessário porque a API Collection na versão 1.4 armazena todos os itens como subtipo de Object (superclasse). O código anterior pode ser escrito da seguinte forma usando a biblioteca Collections genérica: ArrayList<Integer> list = new ArrayList<Integer>(); list.add(0, new Integer(42)); int total = list.get(0).intValue(); © 2007 Marco Fagundes - [email protected] 9 Loop Avançado A classe Iterator é usada pela API Collections para navegação O loop avançado não necessita de iterator e nem de de castind adicional Antes ArrayList list = new ArrayList(); for (Iterator i = list.iterator(); i.hasNext();) { System.out.println((String)i.next()); } Depois ArrayList<String> list = new ArrayList<String>(); for (String str : list) { System.out.println(str) } © 2007 Marco Fagundes - [email protected] 10 Lab1 - Tipos Genéricos e Loop Avançado Construa um programa que permita o cadastro de 5 candidatos (numero e nome) Liste todos os candidatos cadastrados © 2007 Marco Fagundes - [email protected] 11 Leitura Recomendada http://java.sun.com/docs/books/tutorial/collections /index.html http://java.sun.com/docs/books/tutorial/extra/gen erics/index.html © 2007 Marco Fagundes - [email protected] 12