Coleções são úteis para armazenar dados. Em uma matriz normal, o tamanho da matriz é fixo. Às vezes, é necessário criar matrizes que possam crescer conforme necessário. Linguagens de programação como Java possuem coleções. É uma estrutura com um conjunto de classes e interfaces. Serve como um contêiner para um grupo de elementos. As coleções permitem armazenar, atualizar e recuperar um conjunto de elementos. Ajuda a trabalhar com estruturas de dados como listas, conjuntos, árvores e mapas. A lista é uma interface da estrutura Collection. ArrayList e LinkedList são duas classes na estrutura de coleções. Eles implementam a interface de coleção e a interface de lista. Este artigo discute a diferença entre ArrayList e LinkedList. ArrayList é uma classe que estende o AbstractList e implementa a interface List, que internamente usa uma matriz dinâmica para armazenar elementos de dados. LinkedList é uma classe que estende o AbstractSequentialList e implementa as interfaces List, Deque e Queue, que usam internamente uma lista duplamente vinculada para armazenar elementos de dados. Esse é o diferença chave entre ArrayList e LinkedList.
1. Visão geral e principais diferenças
2. O que é ArrayList
3. O que é LinkedList
4. Semelhanças entre ArrayList e LinkedList
5. Comparação lado a lado - ArrayList vs LinkedList em forma de tabela
6. Resumo
A classe ArrayList é usada para criar matrizes dinâmicas. Ao contrário de uma matriz normal, o tamanho de uma matriz dinâmica não é fixo. Um objeto criado usando a classe ArrayList tem permissão para armazenar um conjunto de elementos na lista. A capacidade aumenta automaticamente, para que o programador possa adicionar elementos à lista. A classe ArrayList estende a classe AbstractList que implementa a interface List. Portanto, os métodos da interface da lista podem ser usados pelo ArrayList. Para acessar elementos, o método get () é usado. O método add () pode ser usado para adicionar elementos à lista. O método remove () é usado para remover um elemento da lista. Consulte o programa abaixo.
Figura 01: Exemplo de ArrayList
De acordo com o programa acima, um objeto de ArrayList é criado. Usando o método add, elementos podem ser adicionados dinamicamente. Os elementos "A", "B", "C", "D" e "E" são adicionados usando o método add. O método remove é usado para remover um elemento da lista. Ao passar 4 para o método de remoção, a letra no 4º índice, que é “E”, é removida da lista. Ao percorrer a lista usando o loop for, as letras A, B, C e D serão impressas.
Semelhante ao ArrayList, o LinkedList é usado para armazenar elementos de dados dinamicamente. Um objeto criado usando a classe LinkedList tem permissão para armazenar um conjunto de elementos na lista. A capacidade aumenta automaticamente, para que o programador possa adicionar elementos à lista. Ele usa internamente lista duplamente vinculada para armazenar dados. Em uma lista duplamente vinculada, os dados são armazenados como nós. Cada nó contém dois links. O primeiro link aponta para o nó anterior. O próximo link aponta para o próximo nó na sequência.
A classe LinkedList estende a classe AbstractSequentialList e implementa a interface List. Portanto, os métodos da interface da lista podem ser usados pelo LinkedList. O método get () pode ser usado para acessar elementos da lista. O método add () pode ser usado para adicionar elementos à lista. O método remove () é usado para remover um elemento da lista. Consulte o programa abaixo.
Figura 02: Exemplo com LinkedList
De acordo com o programa acima, um objeto do LinkedList é criado. Usando o método add, elementos podem ser adicionados dinamicamente. Os elementos "A", "B", "C", "D" e "E" são adicionados usando o método add. O método remove é usado para remover um elemento da lista. Ao passar 4 para o método remove, a letra no 4º índice, que é “E”, é removida da lista. Ao iterar usando o loop for, as letras A, B, C e D serão impressas.
ArrayList vs LinkedList | |
ArrayList é uma classe que estende o AbstractList e implementa a interface List que internamente usa uma matriz dinâmica para armazenar elementos de dados. | LinkedList é uma classe que estende o AbstractSequentialList e implementa as interfaces List, Deque, Queue, que usa internamente uma lista duplamente vinculada para armazenar elementos de dados. |
Acessando elementos | |
O acesso a elementos de ArrayList é mais rápido que a de um LinkedList. | O acesso a elementos do LinkedList é mais lento que o de um ArrayList. |
Manipulando elementos | |
Manipular elementos de ArrayList é mais lento que em um LinkedList. | Manipular elementos de LinkedList é mais rápido que um ArrayList. |
Comportamento | |
ArrayList executa como uma lista. | LinkedList executa como uma lista e uma fila. |
A estrutura de coleta permite trabalhar com estruturas de dados como listas, árvores, mapas e conjuntos. A lista é uma interface da estrutura de coleta. Este artigo discutiu a diferença entre ArrayList e LinkedList. ArrayList é uma classe que estende o AbstractList e implementa a interface List que internamente usa uma matriz dinâmica para armazenar elementos de dados. LinkedList é uma classe que estende o AbstractSequentialList e implementa as interfaces List, Deque, Queue, que usa internamente uma lista duplamente vinculada para armazenar elementos de dados. Essa é a diferença entre ArrayList e LinkedList.
1.Introdução à lista vinculada | Tutorial de estrutura de dados | Estudo à noite. Disponivel aqui
2. “LinkedList em Java - javatpoint.”, The Point, disponível aqui
3. “Classe Java ArrayList - javatpoint.” The Point, disponível aqui