Diferença entre ArrayList e LinkedList em Java

Autor: Laura McKinney
Data De Criação: 3 Abril 2021
Data De Atualização: 6 Poderia 2024
Anonim
Diferença entre ArrayList e LinkedList em Java - Tecnologia
Diferença entre ArrayList e LinkedList em Java - Tecnologia

Contente


ArrayList e LinkedList são os Coleção classes, e ambas implementam o Lista interface. A classe ArrayList cria a lista que é armazenada internamente em um dinâmico matriz que cresce ou diminui de tamanho à medida que os elementos são adicionados ou excluídos dele. O LinkedList também cria a lista que é armazenada internamente em um Duplamente Ligado Lista. Ambas as classes são usadas para armazenar os elementos na lista, mas a principal diferença entre as classes ArrayList e LinkedList é que ArrayList permite acesso aleatório aos elementos da lista, pois opera em um baseado em índice estrutura de dados. Por outro lado, o LinkedList não permite acesso aleatório, pois não possui índices para acessar elementos diretamente, precisa percorrer a lista para recuperar ou acessar um elemento da lista.


Vamos discutir mais algumas diferenças entre ArrayList e LinkedList com a ajuda do gráfico de comparação mostrado abaixo.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoArrayListLinkedList
Basic ArrayList permite acesso aleatório aos elementos da lista.O LinkedList não permite acesso aleatório aos elementos da lista.
Estrutura de dadosA estrutura interna usada para armazenar elementos é a matriz dinâmica.A estrutura interna usada para armazenar elementos é duplamente lista de links.
EstendeArrayList estende a classe AbstarctList.LinkedList estende AbstractSequentialList.
ImplementosAbstractList implementa a interface de lista.O LinkedList implementa List, Deque, Queue.
Acesso O acesso aos elementos da lista é mais rápido no ArrayList.O acesso aos elementos da lista é mais lento no LinkedList.
ManipulaçãoA manipulação de elementos na lista é mais lenta em ArrayList.A manipulação de elementos na lista é mais rápida no LinkedList.
ComportamentoArraylList se comporta como Lista, à medida que implementa a lista.O LinkedList se comporta como Lista e Fila, pois implementa Lista e Fila.


Definição de ArrayList

o AbstractList classe é definida pelo Estrutura da coleção. Estende AbstarctList e implementa Lista interface. ArrayList usa matriz dinâmica ou seja, a matriz de comprimento variável como uma estrutura de dados interna para armazenar os elementos na lista. A necessidade de ArrayList surge como a matriz em java é de comprimento fixo. Portanto, não pode aumentar ou diminuir de tamanho à medida que os elementos são adicionados ou excluídos da matriz. Então você precisa conhecer o tamanho da matriz necessária com antecedência. Mas a lista de matrizes implementada usando a classe ArrayList pode aumentar e diminuir em tamanho à medida que os elementos são adicionados ou excluídos da matriz.

A lista de matrizes implementada usando ArrayList pode ser acessada aleatoriamente como ArrayList opera com base no índice. Portanto, conhecendo o índice, você pode acessar diretamente o elemento da lista. Existem três construtores de ArrayList:

ArrayList () ArrayList (Collection <? Extends E> c) ArrayList (capacidade int)

o primeiro O construtor implementa uma lista de matrizes vazia. o segundo O construtor implementa uma lista de matrizes inicializada usando o método Coleção c elementos. o terceiro construtor implementa lista de matrizes com o capacidade fornecido no argumento. Trabalhando com o ArrayList, às vezes você precisará converter o Collection ArrayList em uma matriz. Isso pode ser feito chamando toArray ().

Definição de LinkedList

Como ArrayList, LinkedList também é um Coleção classe usa lista duplamente vinculada como uma estrutura de dados interna para armazenar os elementos na lista. A classe LinkedList estende AbstractSequentialList e implementa o Lista, Deque e Fila interfaces. A lista vinculada implementada usando o LinkedList não pode ser acessada aleatoriamente. Se você deseja recuperar qualquer elemento da lista, é necessário iterar a lista para pesquisar esse elemento.

Existem dois construtores na classe LinkedList.

LinkedList () LinkedList (Collection <? Extends E> c)

o primeiro O construtor cria uma lista vinculada vazia. o segundo O construtor cria uma lista vinculada, inicializada com os elementos de Coleção c.

No LinkedList, a manipulação da lista é fácil e rápida. Isso ocorre porque se você adicionar ou excluir qualquer elemento da lista, não será necessário alterar os elementos como em ArrayList. Mas o acesso é mais lento, pois não possui índice para acessar diretamente os elementos.

  1. A lista implementada pelo ArrayList pode ser acessada aleatoriamente porque o ArrayList adota a estrutura de dados baseada em índice da matriz. Por outro lado, a lista implementada pelo LinkedList não pode ser acessada aleatoriamente porque, para recuperar ou acessar um elemento específico da lista, é necessário percorrer a lista.
  2. A estrutura de dados interna usada pelo ArrayList para armazenar os elementos da lista é um matriz dinâmica que podem aumentar ou diminuir à medida que os elementos são adicionados ou excluídos da lista. No entanto, a estrutura de dados interna usada pelo LinkedList para armazenar os elementos na lista é lista duplamente vinculada.
  3. O ArrayList estende o AbstractList classe que também é uma classe Collection, enquanto que a classe LinkedList estende AbstractSequentialList classe que é novamente uma classe Collection.
  4. A classe ArrayList implementa Lista interface, enquanto que a classe LinkedList implementa Lista, Filae Deque interfaces.
  5. O acesso a elementos da lista implementada usando ArrayList é Mais rápido pois possui uma estrutura de dados baseada em índice. Por outro lado, não existe uma estrutura baseada em índice na lista implementada porLinkledList. Portanto, um iterador é aplicado sobre a lista para alcançar o elemento a ser acessado, o que torna o acesso Mais devagar no LinkedList.
  6. Manipulation é Manipulation na lista implementada usando ArrayList, porque sempre que um elemento é adicionado ou excluído da lista, os elementos da lista são deslocados para acomodar a alteração. Por outro lado, a manipulação é mais rápida na lista implementada pelo LinkedList, pois não requer elementos de mudança na lista na adição ou exclusão dos elementos da lista.
  7. ArrayList age como um Lista implementa a interface List, enquanto o LinkedList atua como Lista e fila como ele implementa lista e fila.

Conclusão:

Quando há uma adição ou exclusão freqüente dos elementos na lista, o LinkedList deve ser usado, pois ele apresenta melhor desempenho durante a manipulação. Se a pesquisa frequente for aplicada à lista, o ArrayList é a melhor opção, pois apresenta melhor desempenho ao acessar elementos da lista.