Vimos nos itens anteriores que é muito útil conseguirmos armazenar coleções de dados. Os arrays permitem o armazenamento de coleção de dados, mas a quantidade de dados armazenados é fixa. Ou seja, devemos saber de antemão quantos elementos deveremos armazenar, pois não é possível alterar o tamanho de um array após a sua criação. Sem dúvida, uma saída seria declararmos sempre uma quantidade grande de elementos para não corrermos o risco de não termos espaço (overflow), mas o grande problema seria a alocação desnecessária de espaço de memória.
O java possui em sua biblioteca standard java.util várias classes e interfaces que permitem manter uma coleção de objetos de forma eficiente e expansível. Essas classes são chamadas de JCF, ou Java Collections Framework.
O java possui uma interface chamada List que possui as características necessárias para o armazenamento de coleções de dados. Podemos usar a interface para declarar uma variável que receba qualquer objeto que implemente a interface List:
Entretanto, a declaração abaixo estaria errada:
A declaração acima está errada porque List não é uma classe, então não tem como criar um objeto do tipo List. No java existem basicamente duas classes que implementam a interface List que são a LinkedList e a ArrayList. Visto que as duas implementam a interface List, poderemos usar as duas da mesma forma, apesar da implementação interna de cada uma delas seja diferente. Assim poderemos declarar um objeto que armazene coleções das seguintes formas:
//criando diretamente um objeto do tipo específico
ArrayList minhaColecao = new ArrayList();
LinkedList minhaColecao = new LinkedList();
Ou utilizando a interface List:
List minhaColecao = new ArrayList();
List minhaColecao = new LinkedList();
Chamamos de interface em programação orientada a objetos um conjunto de características/comportamentos que uma determinada classe precisa possuir para uma determinada finalidade. Esse conjunto de características/comportamentos podem ser determinados atributos e/ou métodos. Quando uma classe atende aos requisitos de uma interface dizemos que a classe implementa a interface.
X