Cursos / Informática para Internet / Programação Orientada a Objetos / Aula
A linguagem Java possui um conjunto de classes que servem para armazenar na memória vários objetos. Tais classes não possuem o inconveniente de termos que saber de antemão a quantidade exata de elementos que iremos armazenar, como no caso de arrays. E em alguns casos, nem mesmo o tipo.
Existem tipos principais de Coleções em Java, cada uma com um propósito deferente, como veremos a seguir.
1. Set – representa a mesma ideia de conjuntos da matemática, ou seja, um grupo de objetos sem ordem definida, porém, únicos. Como mostra a Figura 2.
Nunca poderemos prever a ordem com a qual serão apresentados os seus elementos. Essa situação pode não ser um incômodo diante do problema que tivermos. Os sets possuem uma característica importante em relação às buscas de objetos em seu interior, pois não precisam percorrer todos eles.
O principal representante dos Set é a classe HashSet, vejamos um exemplo da sua utilização, como mostra a Listagem 7:
Listagem 7 - Exemplo de um Set2. List – como o próprio nome sugere, representa uma lista de objetos, sendo que nela os objetos podem se repetir. Veja a figura.
Nas listas (List) definidas em Java, os objetos armazenados mantêm a ordem com que foram adicionados. Uma classe do tipo List bastante utilizada é a ArrayList, a qual representa uma alternativa aos arrays convencionais vistos anteriormente. Vejamos um exemplo da utilização de um ArrayList na Listagem 8:
Listagem 8 - Exemplo de ArrayList3. Map – Mapas são estruturas que relacionam um objeto a outro, por exemplo, um número de CEP ao nome de uma rua.
Podemos imaginar dois conjuntos, um de campos-chave e outro de objetos-valor que queremos armazenar. Observe a Figura 4.
Observe que para encontrarmos nossos objetos precisamos localizá-los através de suas chaves. Vejamos uma aplicação desses conceitos na Listagem 9.
Listagem 9 - HashMap na práticaTodas as classes do tipo Set e List descendem (implementam) a interface Collection. Veremos mais detalhes sobre interfaces em aulas futuras. Por hora, podemos entender interfaces como contratos que definem um conjunto de métodos que devem ser implementados pelas classes. No caso da interface Collection, ela define métodos para adicionar, remover, verificar a presença de um dado objeto. Tais métodos devem necessariamente existir em todas as List e Sets definidos para a linguagem Java. Segue abaixo uma lista básica desses métodos.
boolean add(Object) | Adiciona um elemento na coleção. Como algumas coleções não suportam elementos duplicados (exemplo: Sets), esses métodos retornam verdadeiro (true) ou falso (false) para indicar se a adição foi bem sucedida. |
boolean remove(Object) | Remove determinado elemento da coleção. Se ele não fizer parte da coleção, retorna falso (false). |
int size() | Retorna a quantidade de elementos presentes na coleção. |
boolean contains(Object) | Procura por um determinado objeto na coleção. Vale salientar: a comparação é feita pelo método equals(). |
As coleções Java mantêm um mecanismo interno de ordenação e recuperação de dados e para isso fazem uso de tabelas hash. Tais tabelas são utilizadas para que a pesquisa de um objeto seja feita de maneira rápida. Mas, como funciona? Cada objeto é “classificado” pelo seu hashCode, método de java.lang.Object que retorna um int, e com isso podemos agrupar os objetos por esse valor. Quando é realizada uma busca, só é percorrido o grupo de objetos com o mesmo hashCode.
Versão 5.3 - Todos os Direitos reservados