java coleções
DESCRIPTION
Material sobre Coleções em JavaTRANSCRIPT
Coleções
Mario Jorge Pereira
Coleções
Mario Jorge [email protected] Twitter @mariojp
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
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)
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
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
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
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
Métodos das coleções
• Collection, Set, HashSet e TreeSet:– Adição:• add(Object elemento)
– Remoção • remove(Object elemento)
• clear()
– Acesso• iterator()
– Pesquisa• contains(Object elemento)
– Atributos• size()
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)
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()
Hierarquia de classes e interfaces de Collection
Object
Abs tractCollection
Abs tractLis t Abs tractS e t
LinkedList ArrayList Vector
Abs tractS equentialLis t
Collection
HashSet TreeSet
Set
SortedSet
List
Hierarquia de classes e interfaces de Map
Object
AbstractMap
HashMap TreeMap
Map
HashTable SortedMap
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.
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
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
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
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