Java - Framework de coleções
Antes do Java 2, o Java fornecia classes ad hoc como Dictionary, Vector, Stack, e Propriedades para armazenar e manipular grupos de objetos. Embora essas aulas fossem bastante úteis, elas careciam de um tema central e unificador. Assim, a maneira como você usou Vector foi diferente da maneira como você usou Propriedades.
A estrutura de coleções foi projetada para atender a vários objetivos, como −
-
A estrutura tinha que ser de alto desempenho. As implementações para as coleções fundamentais (matrizes dinâmicas, listas vinculadas, árvores e tabelas de hash) deveriam ser altamente eficientes.
-
A estrutura tinha que permitir que diferentes tipos de coleções funcionassem de maneira semelhante e com alto grau de interoperabilidade.
-
A estrutura teve que estender e/ou adaptar uma coleção facilmente.
Para este fim, toda a estrutura de coleções é projetada em torno de um conjunto de interfaces padrão. Várias implementações padrão, como LinkedList, HashSet, e Árvore , dessas interfaces são fornecidas para que você possa usar no estado em que se encontra e também pode implementar sua própria coleção, se desejar.
Uma estrutura de coleções é uma arquitetura unificada para representar e manipular coleções. Todos os frameworks de coleções contêm o seguinte −
-
Interfaces − São tipos de dados abstratos que representam coleções. As interfaces permitem que as coleções sejam manipuladas independentemente dos detalhes de sua representação. Em linguagens orientadas a objetos, as interfaces geralmente formam uma hierarquia.
-
Implementações, ou seja, Classes − Estas são as implementações concretas das interfaces de coleção. Em essência, eles são estruturas de dados reutilizáveis.
-
Algoritmos − Esses são os métodos que realizam cálculos úteis, como pesquisa e classificação, em objetos que implementam interfaces de coleção. Diz-se que os algoritmos são polimórficos:isto é, o mesmo método pode ser usado em muitas implementações diferentes da interface de coleção apropriada.
Além das coleções, a estrutura define várias interfaces e classes de mapas. Os mapas armazenam pares de chave/valor. Embora os mapas não sejam coleções no uso adequado do termo, mas estão totalmente integrados às coleções.
As interfaces de coleção
A estrutura de coleções define várias interfaces. Esta seção fornece uma visão geral de cada interface -
Nº Sr. | Interface e descrição |
---|---|
1 | A interface da coleção Isso permite trabalhar com grupos de objetos; está no topo da hierarquia de coleções. |
2 | A interface da lista Isso estende a Coleção e uma instância de List armazena uma coleção ordenada de elementos. |
3 | O conjunto Isso estende Collection para manipular conjuntos, que devem conter elementos exclusivos. |
4 | O SortedSet Isso estende Set para lidar com conjuntos ordenados. |
5 | O mapa Isso mapeia chaves exclusivas para valores. |
6 | O Mapa.Entrada Isso descreve um elemento (um par chave/valor) em um mapa. Esta é uma classe interna de Map. |
7 | O Mapa Ordenado Isso estende Map para que as chaves sejam mantidas em ordem crescente. |
8 | A enumeração Esta interface legada define os métodos pelos quais você pode enumerar (obter um de cada vez) os elementos em uma coleção de objetos. Essa interface legada foi substituída pelo Iterator. |
As Aulas de Coleção
Java fornece um conjunto de classes de coleção padrão que implementam interfaces de coleção. Algumas das classes fornecem implementações completas que podem ser usadas como estão e outras são classes abstratas, fornecendo implementações esqueléticas que são usadas como pontos de partida para a criação de coleções concretas.
As classes de coleção padrão estão resumidas na tabela a seguir -
Nº Sr. | Classe e Descrição |
---|---|
1 | Coleção de Resumos Implementa a maior parte da interface Collection. |
2 | Lista de Resumos Estende AbstractCollection e implementa a maior parte da interface List. |
3 | ResumoSequentialList Estende AbstractList para uso por uma coleção que usa acesso sequencial em vez de aleatório de seus elementos. |
4 | Lista de links Implementa uma lista vinculada estendendo AbstractSequentialList. |
5 | Lista de Matriz Implementa uma matriz dinâmica estendendo AbstractList. |
6 | Conjunto de Resumos Estende AbstractCollection e implementa a maior parte da interface Set. |
7 | HashSet Estende o AbstractSet para uso com uma tabela de hash. |
8 | LinkedHashSet Estende HashSet para permitir iterações de pedidos de inserção. |
9 | Conjunto de Árvore Implementa um conjunto armazenado em uma árvore. Estende AbstractSet. |
10 | Mapa abstrato Implementa a maior parte da interface Map. |
11 | HashMap Estende o AbstractMap para usar uma tabela de hash. |
12 | Mapa de árvore Estende o AbstractMap para usar uma árvore. |
13 | WeakHashMap Estende o AbstractMap para usar uma tabela de hash com chaves fracas. |
14 | LinkedHashMap Estende o HashMap para permitir iterações de pedidos de inserção. |
15 | IdentityHashMap Estende AbstractMap e usa igualdade de referência ao comparar documentos. |
A AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList e Mapa abstrato classes fornecem implementações esqueléticas das interfaces da coleção principal, para minimizar o esforço necessário para implementá-las.
As seguintes classes legadas definidas por java.util foram discutidas no capítulo anterior −
Nº Sr. | Classe e Descrição |
---|---|
1 | Vetor Isso implementa uma matriz dinâmica. É semelhante ao ArrayList, mas com algumas diferenças. |
2 | Pilha Stack é uma subclasse de Vector que implementa uma pilha padrão de último a entrar, primeiro a sair. |
3 | Dicionário Dicionário é uma classe abstrata que representa um repositório de armazenamento de chave/valor e opera de maneira semelhante ao Map. |
4 | Tabela de hash Hashtable fazia parte do java.util original e é uma implementação concreta de um dicionário. |
5 | Propriedades Propriedades é uma subclasse de Hashtable. Ele é usado para manter listas de valores em que a chave é uma String e o valor também é uma String. |
6 | BitSet Uma classe BitSet cria um tipo especial de matriz que contém valores de bits. Essa matriz pode aumentar de tamanho conforme necessário. |
Os algoritmos de coleção
A estrutura de coleções define vários algoritmos que podem ser aplicados a coleções e mapas. Esses algoritmos são definidos como métodos estáticos dentro da classe Collections.
Vários dos métodos podem lançar uma ClassCastException , que ocorre quando é feita uma tentativa de comparar tipos incompatíveis ou uma UnsupportedOperationException , que ocorre quando é feita uma tentativa de modificar uma coleção não modificável.
As coleções definem três variáveis estáticas:EMPTY_SET, EMPTY_LIST e EMPTY_MAP. Todos são imutáveis.
Nº Sr. | Algoritmo e descrição |
---|---|
1 | Os algoritmos de coleção Aqui está uma lista de toda a implementação do algoritmo. |
Como usar um iterador?
Muitas vezes, você desejará percorrer os elementos de uma coleção. Por exemplo, você pode querer exibir cada elemento.
A maneira mais fácil de fazer isso é empregar um iterador, que é um objeto que implementa a interface Iterator ou ListIterator.
O Iterator permite percorrer uma coleção, obtendo ou removendo elementos. ListIterator estende Iterator para permitir a passagem bidirecional de uma lista e a modificação de elementos.
Nº Sr. | Método e descrição do iterador |
---|---|
1 | Usando Java Iterator Aqui está uma lista de todos os métodos com exemplos fornecidos pelas interfaces Iterator e ListIterator. |
Como usar um comparador?
Tanto TreeSet quanto TreeMap armazenam elementos em uma ordem de classificação. No entanto, é o comparador que define precisamente qual ordem de classificação significa.
Essa interface nos permite classificar uma determinada coleção de várias maneiras diferentes. Além disso, essa interface pode ser usada para classificar qualquer instância de qualquer classe (mesmo classes que não podemos modificar).
Nº Sr. | Método e descrição do iterador |
---|---|
1 | Usando o comparador Java Aqui está uma lista de todos os métodos com exemplos fornecidos pela Interface Comparator. |
Resumo
A estrutura de coleções Java dá ao programador acesso a estruturas de dados pré-empacotadas, bem como a algoritmos para manipulá-las.
Uma coleção é um objeto que pode conter referências a outros objetos. As interfaces de coleção declaram as operações que podem ser executadas em cada tipo de coleção.
As classes e interfaces do framework de coleções estão no pacote java.util.
Java