Coleções em Java - Parte 2
Flávia Falcão
1
Visão Geral : Interfaces Principais
Collection
Set
List
Map
SortedSet
SortedMap
2
Collection
Interface Collection
Um grupo de Objetos
Metodos principais:
Boolean add(Object);
Boolean remove(Object)
Int size();
Boolean isEmpty()
Boolean contains(Object)
Iterator iterator()
3
List
Interface List extends Collection
Representa uma seqüência de Objetos
È possível acessa-los através de índice
Elementos duplicados são permitidos
4
Implementações de List
Vector
ArrayList
LinkedList
Uma implementação de lista duplamente
ligada
Melhor performance que o ArrayList
quando elementos são inseridos e
apagados com freqüência
5
Implementações de List
Apesar da implementação Vector ser a
mais antiga é a mais usada
Porem as implementações ArrayList e
LinkedList são normalmente mais
apropriadas para uso geral e
apresentam também melhor
performance na maioria dos casos
6
Uso de List
Criar
Adcionar elementos
List lista = new ArrayList(); // aqui vc pode
colocar qualquer implementação de List
Lista.add(new Conta(“002”, 2000);
Obter elemento
Conta c = ( Conta) lista.get(0);
7
Exemplo
import java.util.ArrayList;
import java.util.List;
public class ListaExemplo {
public static void main(String args[]){
List exemplo = new ArrayList();
String nome1 ="ana";
String nome2 ="maria";
exemplo.add(nome1);
exemplo.add(nome2);}}
8
Uso de List
Listar Elementos:
For(int i=0;i< lista.size();i++){
System.out.println(lista.get(i));
}
OU
Iterator i = lista.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
9
List
Métodos importantes:
Boolean add(Object)
Boolean remove(object)
Object get(int)
Object set(int,object)
Int indexOf(Object)
Int lastIndexOf(Object)
10
Set
Interface Set extends Collection
Coleção sem ordem de Objetos
Sem elementos duplicados
Mesmos métodos que Collection
Implementado por:
HashSet
TreeSet
11
Uso de Set
Criar
Adicionar
Set conjunto = new HashSet();
conjunto.add("Nome");
Obter um elemento
Utilizar iterator
12
class ConjuntoExemplo{
public static void main(String args[]){
Set exemplo = new HashSet();
String nome1 ="ana";
String nome2 ="maria";
exemplo.add(nome1);
exemplo.add(nome2);
}
13
Uso de Set
Percorrer
Iterator i =
conjunto.iterator();
while(i.hasNext()){
System.out.print((String)i.next
());
}
14
Exemplo
Public class ExemploSets{
public static void main(String args[]){
Set set = new HashSet();
set.add(“bernardo”);
set.add(“elizabete”);
set.add(“maria”);
set.add(“elizabete”);
set.add(“clara”);
System.out.println(set);
Set sortedSet = new TreeSet(set);
System.out.println(sortedSet);
}}
15
Exercicio
Comparação List e Set
Criar uma classe e um método main
Criar uma List e um Set e adicionar
elementos String
Adicionar elementos String repetidos a
ambas as coleções
Verificar o tamanho das duas coleções –
método size()
16
Exercicio( cont.)
Obter elementos : o segundo elemento
de cada coleção e imprimi-los.Como
obter o segundo elemento do Set?
Imprimir as duas coleções
Repetir os passos agora usando um
Objeto Conta ao invés de String. O que
é necessário para isso?
17
Map
Interface Map
Mapeia chaves para valores
Cada chave pode ter no máximo um
valor
Inserções e pesquisas muito rápidas
Implementações
Hashtable
HashMap
18
Uso de Map
Criar
Adicionar elementos
Map mapa = new HashMap();
Mapa.put(“001”, new Conta(“001”,2000));
Obter elementos
Conta c = (Conta) mapa.get(“005”);
19
Iterator
Um iterator é um objeto que nos ajuda
a varrer (iterar) uma coleção
Um cast como é necessário aqui
porque a cole pode conter qualquer
Object e temos que dizer que tipo de
coisa estamos esperando para satisfazer
o compilador Java
Tente compilar o programa sem os casts
20
Como escolher entre as
coleçoes?
Primeiro, aplicação dita se você vai
precisar de Lista, conjunto ou Mapa
Se sua aplicação precisar manter
duplicatas, use Lista
Se sua aplicação não precisar manter
duplicatas e não usa chaves use conjuntos
Se a aplicação não precisar manter
duplicatas e usa chaves, use Mapa
21
Se precisar de uma lista:
Use Vector ou ArrayList se acessar por
indice for com freqüência
Use LinkedList se inserir ou remover
elementos do meio com freqüência
22
Se precisar de um conjunto
Use HashSet se não precisar de um conjunto
ordenado
Use TreeSet se precisar de um conjunto
ordenado
23
Se precisar de um Mapa
Use HashMap se não precisar de um mapa
ordenado
Use TreeMap se precisar de um mapa
ordenado
24
Exercicio 1
Adicione a seqüência de números 2, 5,
3,9,2,4,3,8,5 a um conjunto(Set) e a
uma lista(List), escolhendo a
implementação que desejar. Em
seguida imprima o conteúdo de ambas
as coleções usando iterator e analise as
diferenças.
25
Exercício 2
Escreva uma aplicação de dicionário
com três funções: adicionar um termo o
dicionário,procurar um termo no
dicionário e listar todos os termos
existentes em ordem alfabética.Qual
classe você usou para implementar a
coleção de palavras e por quê?
26