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
Download

iterator