Em Java temos um framework para representar coleções, permitindo manipular os elementos da coleção e a própria coleção, independentemente dos detalhes de sua representação, reduzindo o esforço para o programador. Este framework é composto por:
-
Interfaces: que permitem que as coleções sejam manipuladas independentes de suas implementações;
-
Implementações: são as classes que implementam uma ou mais interfaces do framework;
-
Algoritmos: são métodos que realizam operações como sort, reverse, binarysearch, etc sobre as coleções.
As principais coleções (implementações) são:
1) Set: são conjuntos de objetos e portanto seu comportamento está ligado à ideia subjacente aos conjuntos, assim como em um conjunto as classes que implementam esta interface não podem ter elementos repetidos.
- HashSet: esta classe implementa um conjunto e ao mesmo tempo um método de acesso utilizando uma tabela hash (uma instância de HashMap)
- LinkedHashSet: é uma implementação de tabela hash com listas encadeadas. Diferente do HashSet é mantida uma lista duplamente encadeada entre os elementos, com isto temos definida a ordem da iteração que é a ordem de inserção
- TreeSet: implementado como uma árvore rubro-negra, gerando um conjunto ordenado de acordo com a ordenação natural dos elementos. É possível implementar um Comparator que especifica qual a ordem será seguida.
- EnumSet: utilizada para type enumerados (Enum class). Todos os elementos de um EnumSet devem ser de um único tipo enumerado que é especificado implicita ou explicitamente quando o set é criado.
- LinkedList: é uma coleção implementada sob a forma de uma lista duplamente encadeada. Esta implementação também realiza a interface de List.
- ArrayDeque: é uma implementação de um Array redimensionável, crescendo de acordo com a necessidade
- ArrayList: implementada com Array
- LinkedList: mesma implementação vista em Deque. As diferenças ocorrem no tipo de implementação. Por exemplo, em uma implementação com lista podemos utilizar o método .add(int index, E element) que permite inserir em uma posição específica. Se estivéssemos implementando somente Deque, usaríamos .add(E element), que insere no final da lista. O mesmo vale para .get() e .remove().
- Stack: implementa uma pilha no formato LIFO (last in first out), estendendo a classe Vector. Possui os métodos clássicos pop() e push() para manipular os objetos.
- HashMap: é uma implementação de uma tabela hash
- TreeMap: é uma implementação de árvore rubro-negra, sendo a ordenação fornecida pela ordem natural dos elementos ou por um Comparator atribuído na criação do mapa
- LinkedHashMap: é uma implementação que une tabela hash e listas encadeadas (duplamente encadeada)
- EnumMap: é uma implementação específica para utilização de tipos enumerados como chaves do mapa. Nesta implementação, todas as chaves devem vir de um único tipo enumerado.
Nenhum comentário:
Postar um comentário