quarta-feira, 14 de abril de 2010

Coleções/Collections

Vamos iniciar com apenas uma prévia do que são as coleções.

Podemos definir que coleção é uma estrutura de dados na qual os objetos são armazenados. Esta coleção pode crescer ou diminuir dinamicamente.

Em java 5, a estrutura de conjuntos nos fornece listas, conjuntos, mapas e filas.Vamos detalhar um pouco mais a seguir, primeiro vamos ver como fica a estrutura das coleções e dos maps.


Vendo rapidamente estes diagramas, é possivel já fazer a nossa primeira análise:
É muito fácil confudir o Collection com Collections. Mas qual a diferença?

Collections é uma classe, possui métodos utilitários estáticos, enquanto Collection é uma Interface com as declarações dos métodos comuns à maioria dos conjuntos.

De uma forma objetiva, como ficaria este primeiro diagrama?
Collection é uma Interface, onde possui métodos como add, remove, addAll, removeAll entre outros, no nosso contexto, ela seria a Interface 'Pai'.

Tendo como filhos, temos as Interfaces Set, List e Qeue. Todas estas estendem a Interface pai.
Detalhando um pouco de cada 'Filho' do Collection.

Interface Set: Dá importância a exclusividade, não permitindo registros duplicados

Tem como seus 'descendentes':

HashSet => Conjunto Set, não classificado e não ordenado.
LinkedHashSet => Quando a ordem da iteração for importante, essa classe é a ideal para usar, é uma versão ordenada do HashSet
TreeSet => É um dos 2 conjuntos ordenados (outro TreeMap). Mantem os registros na sua ordem natural, mas você pode personalizar isso usando o Comparable ou Comparator.
 
Interface List: Ao contrário do Set, o List permite duplicatas.

ArrayList => um array, como o próprio nome diz. conjunto ordenado por indice. não classificado. Proporciona uma iteração rápida. Prefira esta lista a LinkedList, quando isso for requisito.
 Vector => semelhante ao ArrayList, mas seus métodos são sincronizados para garantirem a segurança com Threads.
LinkedList => Ordenado pela posição no índice.

Interface Qeue: FIFO, primeiro a entrar, primeiro a sair

PriorityQueue => a idéia dessa classe, é criar uma prioridade na manipulação dos elementos.

--------------------------

Interface MAP: o MAP trabalha com chave e valor. Cada chave é mapeada com um valor específico. É importante ressaltar, que tanto a chave quanto o valor, são objetos.

HashMap => Não classificado e não ordenado. a ordema na iteração não é a preocupação dessa classe.
HashTable => Permite tanto chaves e valores nulos.
TreeMap => Conjunto Map classificado. Permite a personalização na ordem  de iteração por meio do Comparable ou Comparator.

E aqui finalizamos as Coleções.

Bom, espero poder ter ajudado com algumas informações.

2 comentários:

  1. Muito boa as informacoes... foram bastantes uteis....
    valew

    ResponderExcluir
  2. Precisamos de ensino assim.
    Aprendi coleções em java dessa forma, estou sofrendo para aprender coleções do C#. Estou montando diagramas através da documentação bagunçada do C#.

    ResponderExcluir