Um erro comum cometido por novos programadores é armazenar todas as coleções de dados em matrizes simples. Enquanto a matriz básica é uma estrutura de dados grande, ele tem uma série de deficiências que podem ser evitadas usando algumas das outras estruturas de dados básicas. O Java Collections Framework fornece um conjunto de interfaces e classes de fácil utilização que implementam algumas das estruturas de dados mais comuns em ciência da computação. Matriz Básica
A melhor coisa sobre um conjunto básico em Java é que ele pode ler e escrito de forma rápida . No entanto, a adição ou remoção de um elemento da matriz permanentemente requer uma grande quantidade de tempo, porque Java não suporta matrizes dinâmicas . Toda vez que você redimensionar uma matriz em Java, você deve reconstruir a matriz de novo a partir do zero , um elemento de cada vez, com um loop. Você pode evitar isso, sempre inicializar suas matrizes para o tamanho máximo exigido a qualquer momento durante a execução, mas que pode ser um desperdício dramático da memória e é apenas ruim de design em geral.
ArrayList
a classe ArrayList da biblioteca java.util aborda alguns desses problemas envolvendo um conjunto de funções gerente em torno de uma matriz oculta. Esta matriz está estrategicamente aumento e diminuição de tamanho , periodicamente , de modo que , em média , a adição e remoção de elementos ocorre muito rapidamente . Mas, ocasionalmente , a , array interno escondido simplesmente tem que ser redimensionados, e nesses casos , a operação vai exigir uma quantidade muito maior de tempo.
LinkedList
o LinkedList vai mais longe do que o ArrayList e realmente não tem disposição alguma, oculta ou não. Em vez disso , os registros são encadeada em conjunto em nós , com cada nó que contém uma referência para o endereço de memória do próximo . A vantagem de um LinkedList é que a adição ou remoção de novas peças de dados sempre ocorre muito rapidamente o tempo e nunca há qualquer redimensionamento de uma série a ser realizada. No entanto, é impossível acessar os dados no meio da lista , sem passar por toda a lista a partir da frente ou para trás, de modo que o tempo que leva para ler dados a partir do meio de uma LinkedList pode ser significativo.
o ArrayList permite que os dados em qualquer lugar dentro dele para ser acessado muito rapidamente, e geralmente pode redimensionar rapidamente, mas , por vezes, requer um tempo extra quando sua variedade interna precisa ser reconstruído . O LinkedList pode sempre adicionar e remover dados da lista muito rapidamente, mas a recuperação de dados a partir do meio da lista pode ser demorado . Isso faz com que o LinkedList uma boa escolha para pilhas e filas que só serão acessados bem na frente ou para trás, mas o ArrayList a melhor escolha como um substituto geral para a matriz simples.
HashSet < br >
o HashSet , como tanto o ArrayList e LinkedList , permite que dados sejam adicionados e removidos muito, muito rapidamente , e também tem mais uma vantagem : a HashSet podem ser pesquisados de forma extremamente rápida , mais rápido do que um array, ArrayLists , ou Linked List . Ele faz isso através da realização de uma operação matemática sobre um pedaço de dados para determinar o índice de uma matriz , e , em seguida, realizar a mesma operação com os dados a serem pesquisados para obter o índice de os dados desejados .
Se que é confuso, não se preocupe. O importante é que HashSets são grandes para conjuntos de dados que terão que ser pesquisadas através de mais e mais. Mas eles também têm uma fraqueza significativa : é que um Hashset não manter a ordem dos dados que é colocado dentro dele, ea ordenação dos elementos do conjunto pode mudar de um momento para o outro . Por exemplo, em uma matriz básica , se um elemento é colocado no índice 0 , o programador pode contar com ele permanecendo no índice 0 para sempre , até que ela muda . Mas em um HashSet , um elemento no índice 0 em um momento pode muito bem ser no índice 327 , no momento seguinte.