Java Coleções

Post on 06-May-2015

4.878 views 5 download

description

Material sobre Coleções em Java

Transcript of Java Coleções

Coleções

Mario Jorge Pereira

Coleções

Mario Jorge Pereiramariojp@gmail.com 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