Diferença entre Array List e Linked List

Diferença entre Array List e Linked List

Como os dados são armazenados?

Lista de matrizes e lista vinculada são termos comuns quando se trata de dados armazenamento e recuperação. Embora existam muitos dispositivos de armazenamento, em última análise, eles dependem do mecanismo de armazenamento. Esses dois mecanismos de armazenamento colocam seus dados nos dispositivos de armazenamento e os recuperam quando necessário. Vamos levar uma olhada em como eles armazenam dados em sua memória. A lista Array usa um armazenamento sequencial e as partes dos dados são armazenadas uma após a outra. Esta é talvez uma forma mais simples de armazenamento - evita confusão. Sim, podemos recuperar o próximo item ou dados do próximo local de memória da lista de array; no entanto, ele é armazenado com a ajuda de ponteiros na lista vinculada. Aqui, precisamos de dois locais de memória para armazenamento - um para os dados e outro para o ponteiro. Um ponteiro endereça a localização da memória dos próximos dados. Podemos compreender facilmente que a lista vinculada nunca armazena dados sequencialmente; em vez disso, ele usa um mecanismo de armazenamento aleatório. Os ponteiros são os principais elementos para localizar os locais dos dados na memória.



Matriz dinâmica e lista vinculada

Já discutimos como ambos os mecanismos de armazenamento colocam os dados e podemos dar um termo 'matriz dinâmica' para o Esquema de armazenamento interno da lista de matrizes. Ele apenas coloca as partes de dados uma após a outra - daí o nome - enquanto a lista vinculada usa uma lista interna com a ajuda de ponteiros para rastrear o próximo item. Portanto, ele usa uma lista vinculada interna, como uma lista unida ou duplamente vinculada para nos mostrar os próximos dados.



Uso de memória

Como a lista Array armazena apenas os dados reais, precisamos de espaço apenas para os dados que armazenamos. Por outro lado, na lista vinculada, usamos ponteiros também. Portanto, dois locais de memória são necessários, e podemos dizer que a lista vinculada consome mais memória do que a lista Array. Um lado vantajoso da lista vinculada é que ela nunca requer locais de memória contínuos para armazenar nossos dados, ao contrário da lista Array. Os ponteiros são capazes de manter a posição do próximo local de dados e podemos até usar slots de memória menores que não são contínuos. Quando se trata de uso de memória, os ponteiros desempenham o papel principal na lista vinculada, assim como a eficácia deles.

Tamanho da lista de matriz inicial e lista vinculada

Com a lista Array, mesmo uma lista vazia requer um tamanho de 10, mas com uma lista vinculada, não precisamos de um espaço tão grande. Podemos criar uma lista vinculada vazia com um tamanho de 0. Mais tarde, podemos aumentar o tamanho conforme necessário.



Recuperação de dados

A recuperação de dados é mais simples na lista Array, pois ela armazena sequencialmente. Tudo o que faz é identificar a primeira localização dos dados; a partir daí, o próximo local é acessado sequencialmente para recuperar o resto. Ele calcula como a primeira posição de dados + ‘n’, onde ‘n’ é a ordem dos dados na lista Array. A lista vinculada refere-se ao ponteiro inicial para encontrar a primeira localização dos dados e, a partir daí, refere-se ao ponteiro associado a cada dado para encontrar a próxima localização dos dados. O processo de recuperação depende principalmente dos ponteiros aqui, e eles efetivamente nos mostram a próxima localização de dados.

Fim dos Dados

A lista Array usa um valor nulo para marcar o fim dos dados, enquanto a lista Linked usa um ponteiro nulo para esse propósito. Assim que o sistema reconhece dados nulos, a lista Array interrompe a próxima recuperação de dados. De maneira semelhante, o ponteiro nulo impede o sistema de prosseguir para a próxima recuperação de dados.

Traversal reverso

A lista vinculada nos permite percorrer nas direções reversas com a ajuda de descendingiterator (). No entanto, não temos esse recurso em uma lista de Array - a travessia reversa se torna um problema aqui.



Sintaxe

Vejamos a sintaxe Java de ambos os mecanismos de armazenamento.

Criação de lista de matriz:

Lista arraylistsample = new ArrayList ();

Adicionando objetos à lista de matrizes:

Arraylistsample.add (“nome1”);

Arraylistsample.add (“nome2”);

É assim que a lista Array resultante será semelhante - [nome1, nome2].

Criação de lista vinculada:

List linkedlistsample = new linkedList ();

Adicionando objetos à lista vinculada:

Linkedlistsample.add (“nome3”);

Linkedlistsample.add (“nome4”);

É assim que a lista vinculada resultante será semelhante - [nome3, nome4].

O que é melhor para a operação Get ou Search?

A lista Array leva O (1) tempo para corre qualquer pesquisa de dados, enquanto a lista vinculada leva u O (n) para o nºpesquisa de dados. Portanto, uma lista Array sempre usa um tempo constante para qualquer pesquisa de dados, mas na lista vinculada, o tempo gasto depende da posição dos dados. Portanto, as listas de matrizes são sempre uma escolha melhor para operações Get ou Search.

O que é melhor para a operação de inserção ou adição?

Tanto a lista Array quanto a Lista vinculada levam O (1) tempo para a adição de dados. Mas se a matriz estiver cheia, a lista de matrizes levará um tempo considerável para redimensioná-la e copiar os itens para a lista mais recente. Nesse caso, a lista vinculada é a melhor escolha.

Qual é o melhor para a operação de remoção?

A operação de remoção leva quase o mesmo tempo na lista Array e na lista Linked. Na lista Array, esta operação exclui os dados e, em seguida, muda a posição dos dados para formar a nova matriz - leva tempo O (n). Na lista vinculada, essa operação passa pelos dados específicos e altera as posições do ponteiro para formar a lista mais recente. O tempo para a travessia e a remoção também é O (n) aqui.

O que é mais rápido?

Sabemos que uma lista Array usa uma matriz interna para armazenar os dados reais. Portanto, se algum dado for excluído, todos os dados que virão precisarão de uma mudança de memória. Obviamente, isso requer uma quantidade considerável de tempo e retarda as coisas. Essa mudança de memória não é necessária na lista vinculada, pois tudo o que ela faz é alterar a localização do ponteiro. Portanto, uma lista vinculada é mais rápida do que uma lista Array em qualquer tipo de armazenamento de dados. No entanto, isso depende puramente do tipo de operação, ou seja, para a operação Get ou Search, a lista Linked leva muito mais tempo do que uma lista Array. Quando olhamos para o desempenho geral, podemos dizer que a lista vinculada é mais rápida.

Quando usar uma lista de matrizes e uma lista vinculada?

Uma lista Array é mais adequada para requisitos de dados menores onde a memória contínua está disponível. Mas quando lidamos com grandes quantidades de dados, a disponibilidade de memória contínua implementa os mecanismos de armazenamento de dados, sejam eles pequenos ou grandes. Em seguida, decida qual escolher - a lista Array ou a lista Vinculada. Você pode prosseguir com uma lista de matrizes quando precisar apenas de armazenamento e recuperação de dados. Mas uma lista pode ajudá-lo além disso, manipulando dados. Depois de decidir com que frequência a manipulação de dados é necessária, é importante verificar que tipo de recuperação de dados você costuma realizar. Quando é apenas Get ou Search, a Array List é a melhor escolha; para outras operações, como inserção ou exclusão, vá em frente com a lista vinculada.

Vejamos as diferenças na forma tabular.

S.No Conceitos Diferenças
Lista de Array Lista Ligada
1 Moda de armazenamento de dados Usa armazenamento sequencial de dados Usa armazenamento de dados não sequencial
2 Esquema de Armazenamento Interno Mantém uma matriz dinâmica interna Mantém uma lista vinculada
3 Uso de memória Requer espaço de memória apenas para os dados Requer espaço de memória para dados e também para ponteiros
4 Tamanho da lista inicial Precisa de espaço para pelo menos 10 itens Não precisa de espaço e podemos até criar uma lista vinculada vazia de tamanho 0.
5 Recuperação de dados Calcula como a primeira posição de dados + ‘n’, onde ‘n’ é a ordem dos dados na lista Array Traversal do primeiro ou último até que os dados necessários sejam necessários
6 Fim dos Dados Os valores nulos marcam o fim O Ponteiro Nulo marca o fim
7 Traversal reverso Não permite Permite com a ajuda de um descendente ()
8 Sintaxe de criação de lista Lista arraylistsample = new ArrayList ();

List linkedlistsample = new linkedList ();

9 Adicionando Objetos Arraylistsample.add (“nome1”);

Linkedlistsample.add (“nome3”);

10 Obter ou pesquisar Demora O (1) e tem melhor desempenho Demora O (n) e o desempenho depende da posição dos dados
onze Inserir ou adicionar Consome O (1) tempo, exceto quando a matriz está cheia Consome O (1) tempo em todas as circunstâncias
12 Exclusão ou Remoção Demora O (n) Demora O (n)
13 Quando usar? Quando há muitas operações Get ou Search envolvidas; a disponibilidade de memória deve ser maior, mesmo no início Quando há muitas operações de Inserir ou Excluir e a disponibilidade de memória não precisa ser contínua

Publicações Populares

Diferença entre ignorância e apatia

Ignorância vs Apatia Qual é a diferença entre 'ignorância' e 'apatia'? Ambas as palavras têm um significado relacionado à maneira como o indivíduo pensa, ou mentalidade.

Filmes de batalha: salvando o soldado Ryan

SALVAR O PRIVADO RYAN começa com a batalha pela Praia de Omaha. Para conseguir sua horrível recriação dos eventos lá em 6 de junho de 1944, o diretor Steven Spielberg gastou US $ 12 milhões e usou 1.500 extras, incluindo mais de 20 amputados reais retratando homens cujos membros foram explodidos. O resultado, disse o crítico Roger Ebert sobre o lançamento do filme em 1998, foi tão gráfico quanto qualquer outra filmagem de guerra que eu já vi. A sequência de Omaha Beach também ilustra o combate como uma forma selvagem de negociação

Na linha de frente da guerra de bestas

Em 1962, a CIA, as Forças Especiais dos EUA e os Montagnards do Vietnã desenvolveram táticas de contra-insurgência que perduram até hoje

Diferença entre Von e Van

Von vs Van Os prefixos do sobrenome (ou prefixo do sobrenome) von e van são freqüentemente encontrados em sobrenomes europeus ou em pessoas de ascendência europeia. Desde sobrenomes freqüentemente

Como a Guerra Civil foi a época do boom do setor de notícias

Mudanças na tecnologia e desejo por informações de batalha levaram ao nascimento do jornalismo americano moderno.

Diferença entre picadas de cobra e picadas de aranha

Picadas de cobra contra picadas de aranha Cobras e aranhas são criaturas que ajudam uma família a se livrar das pragas. As cobras comem roedores enquanto as aranhas se alimentam de mosquitos e