Através de uma hierarquia de interfaces, a linguagem Java implementa e disponibiliza classes que definem os mais variados tipos de coleções a fim auxiliar no desenvolvimento de aplicações.
As classes do framework de coleções do Java livram o programador da necessidade de implementar complicadas estruturas de dados para gerenciar coleções de objetos facilitando, portanto, o desenvolvimento de aplicações, acelerando o desenvolvimento e simplificando o intercâmbio de dados ao viabilizar uma implementação mais rápida, eficiente e padronizada com o reuso de coleções que são amplamente adotadas no mundo Java.
A implementação de coleções na linguagem Java, antes do Java 2 (JDK 1.2), incluía poucas classes, como Vector e HashTable, e não tinha a forma e organização de um framework.
o lançamento do Java 2, no entanto, foram criadas novas classes e interfaces para organizar os mais diversos tipos de coleções agora existentes, originando assim o Java Collections Framework.
Com este framework, o Java ganhou componentes comuns – reutilizáveis para diversas aplicações – que usam coleções de dados para atender as mais variadas finalidades de coleções, como listas, conjuntos, pilhas, vetores, entre outros.
Algum tempo depois, já no Java 5, foram adicionados diversos recursos ao framework de coleções devido à criação de Generics, o que permitiu criar coleções “tipadas”, isto é, coleções cujos elementos são restritos a um determinado tipo em vez de Object.
Além disso, com o Java 5, foi criado também o laço "for melhorado" (enhanced for), possibilitando percorrer qualquer coleção facilmente.
Passados alguns anos, com o lançamento do Java 7, mais melhorias foram realizadas no framework de coleções e foi criado o operador diamante, que simplifica a instanciação de objetos (coleções) usando Generics.
No Java Collections Framework, através de interfaces, são definidos e organizados os mais diversos tipos de coleções, de forma que são oferecidas classes que implementam os mais variados padrões de coleções, como mostra na Figura 1.
Figura 1. Estrutura das principais interfaces e classes do framework de coleções.
A interface java.util.Iterable está no topo da hierarquia de interfaces do framework e sua principal função é definir que qualquer coleção filha seja iterável pelo laço de repetição “for melhorado”. Para isso, ela disponibiliza alguns métodos, sendo iterator() o método principal, que retorna um objeto que implementa a interface Iterator.
Através da interface java.util.Iterator pode-se percorrer qualquer coleção facilmente, pois além da vantagem de se usar o “for melhorado”, é uma interface que define alguns métodos que permitem percorrer qualquer tipo de coleção. Os principais métodos são:
- boolean hasNext(): retorna true se existem mais elementos a serem acessados na coleção vinculada a esse Iterator;
- E next(): retorna o próximo elemento disponível na coleção vinculada a esse iterator;
- void remove(): remove da coleção o último elemento acessado através desse Iterator.
Observe que tanto Iterable como Iterator fazem uso de Generics. Sendo assim, em vez de apenas criar coleções para armazenar objetos do tipo Object, é possível que sejam criadas coleções “tipadas”, restringindo o tipo de objeto que a coleção pode armazenar (este recurso é denotado pelo <E> na Figura 1), aumentando assim o controle da coleção pelo programador, uma vez que esse recurso permite descobrir erros de programação em tempo de compilação.
Como resultado do uso de Generics na interface Iterable, a sua interface filha java.util.Collection também pode ser parametrizada com um tipo usando Generics.
Como Collection é a interface mãe de quase todos os tipos de coleções, as funcionalidades conferidas a ela através de Generics são automaticamente herdadas por todas as coleções filhas.
A interface Collection tem a função de definir muitas das funcionalidades comuns a quase todas as coleções e será por ela que iniciaremos esse artigo.
A in ...
Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais