O documento discute coleções em Java, definindo-as como estruturas de dados que armazenam objetos. Apresenta os principais tipos de coleções: listas, conjuntos e mapas, descrevendo suas características e operações básicas como adição, remoção e acesso a elementos. Fornece também detalhes sobre classes e interfaces de coleções no Java.
3. Conceito
• Uma coleção é uma estrutura de dados que permite
armazenar vários objetos
• A coleção é, em si, um objeto também
– Um objeto de agregação
• As operações que podem ser feitas em coleções
variam mas normalmente incluem:
– Adição de elementos
– Remoção de elementos
– Acesso aos elementos
– Pesquisa de elementos
– Indagar sobre atributos
4. Tipos de Coleções
• Dependendo da forma de fazer as 4 operações
básicas (adição, remoção, acesso e pesquisa), teremos
vários tipos de coleções
– Certas operações poderão ter um desempenho melhor ou
pior dependendo do tipo de coleção
– Certas operações poderão ter restrições ou
funcionalidade especial dependendo do tipo de coleção
• Os três grandes grupos de coleções são:
– A lista (List)
– O conjunto (Set)
– O mapa (Map)
5. Listas (List)
• Uma lista é uma coleção de elementos arrumados
numa ordem linear, isto é, onde cada elemento tem um
antecessor (exceto o primeiro) e um sucessor (exceto o
último)
• Operações mais importantes:
– Adicionar um objeto em qualquer lugar da lista
– Remover um objeto presente em qualquer lugar da lista
– Obter o elemento de qualquer posição da lista
– Iterar sobre os elementos
– Descobrir se um certo elemento está na lista
– Descobrir o índice de um certo elemento na lista
– Obter o número de elementos da coleção
6. Conjuntos
• Um conjunto é uma coleção que não possui elementos
duplicados (descarta duplicações)
• Operações mais importantes:
– Adicionar um objeto no conjunto
– Remover um objeto presente no conjunto
– Iterar sobre os elementos
– Descobrir se um certo elemento está na coleção
– Obter o número de elementos
7. Mapas (Map)
• Um mapa armazena pares (chave, valor) chamados
itens. Chaves e valores podem ser de qualquer tipo.
• Operações mais importantes:
– Adicionar um item no mapa (fornecendo chave e valor)
– Remover um item com chave dada
– Iterar sobre os itens
– Descobrir se um elemento com chave dada está na
coleção
– Obter o número de elementos
8. Coleções em Java Hierarquia de interfaces
fornecidas pelo Java
• O Map não é uma Collection mas podemos obter uma
"visão de Collection" com todas as chaves ou com
todos os valores .
Collection Map
SortedMapSetList
SortedSet
10. Métodos das coleções
• List, Vector, ArrayList e LinkedList
– Adição
• add(int index, Object elemento)
– Remoção
• remove(int index)
– Acesso
• get(int index)
• ListIterator() (iterador que pode andar para trás)
– Pesquisa
• indexOf(Object elemento)
11. Métodos das coleções
• Map, HashMap, TreeMap
– Adição
• put(Object key, Object value)
– Remoção
• remove(Object key)
• clear()
– Acesso
• get(Object key) (também é "pesquisa")
• entrySet() (retorna os itens como conjunto - Set)
• KeySet() (retorna as chaves como conjunto - Set)
• Values() (retorna os valores como Collection)
– Pesquisa
• get(Object key) (também é "acesso")
– Atributos
• size()
12. Hierarquia de classes e interfaces de
Collection
Object
AbstractCollection
AbstractList AbstractS et
LinkedList ArrayList Vector
AbstractS equentialList
Collection
HashSet TreeSet
Set
SortedSet
List
13. Hierarquia de classes e interfaces de Map
Object
AbstractMap
HashMap TreeMap
Map
HashTable SortedMap
14. Desafio
• Leia um arquivo contendo linhas com dois campos
separados por ":"
– Exemplo de linha:
• hfxtncscnzmd:pngtrhpeqmtjcstxdouof
– Insira cada linha como uma String emuma coleção
• Se a coleção for do tipo Map, o primeiro campo é a
chave, o segundo campo é a valor
• Leia um segundo arquivo linha por linha e pesquise se
cada linha está na coleção, imprimindo quantos
elementos foram descobertos
• Mais detalhes e dicas no PDF Desafio com coleções.
15. Regras básicas para escolher entre
coleções
• Decida aplicação dita se você vai precisar de Lista,
Conjunto ou Mapa?
– Se sua aplicação precisar manter duplicatas, use Lista
• Se precisar fazer muita pesquisa, fuja da lista!
– Se sua aplicação não precisar manter duplicatas e não
usa chaves, use Conjunto
– Se sua aplicação não precisar manter duplicatas e usa
chaves, use Mapa
16. Regras básicas para escolher entre
coleções
• Se escolheu uma Lista
– Use Vector se acessar por índice for comum
– Use LinkedList se inserir ou remover elementos do
meio com freqüência
• Se escolheu um Conjunto
– Use HashSet se não precisar de um conjunto ordenado
– Use TreeSet se precisar de um conjunto ordenado
• Se escolheu de um Mapa
– Use HashMap se não precisar de um mapa ordenado
– Use TreeMap se precisar de um mapa ordenado
17. Formas de percorrer uma Coleção
for(Iterator it = <colecao>.iterator()
;it.hasNext() ; ){
<Tipo> <referencia> (<Tipo>) it.next();
}
Iterator it = <colecao>.iterator();
while (it.hasNext()){
<Tipo> <referencia> (<Tipo>) it.next();
}
for( <Tipo> <referencia> : <coleção> ) {
usar a <referencia>;
} //JAVA 1.5
18. Referências
• Core Java - Vol. 1 - Fundamentos - 8ª Ed. 2010
Autor: Cornell, Gary; Horstmann, Cay S.
Editora: Pearson Education – Br
I.S.B.N.: 9788576053576
• Prof Dr. Jacques Philippe Sauvé
(<http://www.dsc.ufcg.edu.br/~jacques>)
• Argonavis (<www.argonavis.com.br>)
• Mario Jorge Pereira (<www.mariojp.com.br>)
Notas de Aula