Differenza tra ArrayList e LinkedList in Java

Autore: Laura McKinney
Data Della Creazione: 3 Aprile 2021
Data Di Aggiornamento: 15 Maggio 2024
Anonim
LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka
Video: LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka

Contenuto


ArrayList e LinkedList sono i file Collezione classi, ed entrambi implementano il Elenco interfaccia. La classe ArrayList crea l'elenco che è archiviato internamente in a dinamico Vettore che cresce o si riduce di dimensioni man mano che gli elementi vengono aggiunti o eliminati da esso. LinkedList crea anche l'elenco che è archiviato internamente in a Doppiamente connesso Elenco. Entrambe le classi vengono utilizzate per memorizzare gli elementi nell'elenco, ma la principale differenza tra le classi ArrayList e LinkedList è che Lista di array consente l'accesso casuale agli elementi nell'elenco mentre opera su un indice a base struttura dati. D'altra parte, il Lista collegata non consente l'accesso casuale poiché non ha indici per accedere direttamente agli elementi, deve attraversare l'elenco per recuperare o accedere a un elemento dall'elenco.


Discutiamo alcune altre differenze tra ArrayList e LinkedList con l'aiuto della tabella di confronto mostrata di seguito.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoLista di arrayLista collegata
Di base ArrayList consente l'accesso casuale agli elementi nell'elenco.LinkedList non consente l'accesso casuale agli elementi nell'elenco.
Struttura datiLa struttura interna utilizzata per la memorizzazione degli elementi è l'array dinamico.La struttura interna utilizzata per memorizzare gli elementi è doppiamente elenco di collegamenti.
estendeArrayList estende la classe AbstarctList.LinkedList estende AbstractSequentialList.
implementaAbstractList implementa l'interfaccia List.LinkedList implementa List, Deque, Queue.
Accesso L'accesso agli elementi nell'elenco è più veloce in ArrayList.L'accesso agli elementi nell'elenco è più lento in LinkedList.
ManipolazioneLa manipolazione degli elementi nell'elenco è più lenta in ArrayList.La manipolazione di elementi nell'elenco è più rapida in LinkedList.
ComportamentoArraylList si comporta come Elenco in quanto implementa l'elenco.LinkedList si comporta come Elenco e Coda in quanto implementa Elenco e Coda entrambi.


Definizione di ArrayList

Il AbstractList la classe è definita dal Framework di raccolta. Si estende AbstarctList e implementa Elenco interfaccia. ArrayList utilizza matrice dinamica vale a dire l'array di lunghezza variabile come struttura di dati interna per memorizzare gli elementi nell'elenco. La necessità di ArrayList sorge poiché l'array in java ha una lunghezza fissa. Quindi non può crescere o ridursi in termini di dimensioni poiché gli elementi vengono aggiunti o eliminati dall'array. Quindi devi conoscere in anticipo la dimensione dell'array richiesto. Ma l'elenco di array implementato utilizzando la classe ArrayList può aumentare e ridursi in dimensioni man mano che gli elementi vengono aggiunti o eliminati dall'array.

È possibile accedere all'elenco di array implementato utilizzando ArrayList a caso poiché ArrayList opera sulla base dell'indice. Quindi conoscendo l'indice puoi accedere direttamente all'elemento della lista. Esistono tre costruttori di ArrayList:

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

Il primo costruttore implementa un elenco di array vuoto. Il secondo costruttore implementa un elenco di array inizializzato usando il Collezione c elementi. Il terzo costruttore implementa la lista di array con il capacità fornito nell'argomento. Lavorando con ArrayList, a volte è necessario convertire ArrayList Collection in un array. Può essere fatto chiamando toArray ().

Definizione di LinkedList

Come ArrayList, Lista collegata è anche a Collezione usi di classe lista doppiamente collegata come struttura dati interna per memorizzare gli elementi nell'elenco. La classe LinkedList si estende AbstractSequentialList e implementa il Elenco, deque e Coda interfacce. L'elenco collegato implementato utilizzando LinkedList non è accessibile in modo casuale. Se si desidera recuperare qualsiasi elemento dall'elenco, è necessario iterare l'elenco per cercare quell'elemento.

Esistono due costruttori nella classe LinkedList.

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

Il primo costruttore crea un elenco di collegamenti vuoto. Il secondo costruttore crea un elenco collegato, inizializzato con gli elementi di Collezione c.

In LinkedList, la manipolazione dell'elenco è semplice e veloce. Questo perché se aggiungi o elimini qualsiasi elemento nell'elenco, non è necessario spostare gli elementi come in ArrayList. Ma l'accesso è più lento in quanto non ha indice per accedere direttamente agli elementi.

  1. L'elenco implementato da ArrayList è accessibile in modo casuale poiché ArrayList adotta la struttura di dati basata su indice dell'array. D'altra parte, l'elenco implementato da LinkedList non è accessibile in modo casuale perché per recuperare o accedere a un elemento particolare nell'elenco devi attraversare l'elenco.
  2. La struttura interna dei dati utilizzata da ArrayList per memorizzare gli elementi dell'elenco è a matrice dinamica che può crescere o ridursi quando gli elementi vengono aggiunti o eliminati dall'elenco. Tuttavia, la struttura interna dei dati utilizzata da LinkedList per memorizzare gli elementi nell'elenco è lista doppiamente collegata.
  3. The ArrayList estende il AbstractList class che è anche una classe Collection, mentre la classe LinkedList si estende AbstractSequentialList classe che è di nuovo una classe Collection.
  4. Strumenti della classe ArrayList Elenco interfaccia considerando che la classe LinkedList implementa Elenco, Coda, e deque interfacce.
  5. È l'accesso agli elementi dall'elenco implementato utilizzando ArrayList Più veloce in quanto ha una struttura di dati basata su indice. D'altra parte, non esiste una struttura basata sull'indice nella lista implementata daLinkledList. Quindi, un iteratore viene applicato sull'elenco per raggiungere l'elemento a cui si accede che rende l'accesso Più lentamente in LinkedList.
  6. La manipolazione è Manipolazione nell'elenco implementato utilizzando ArrayList perché ogni volta che un elemento viene aggiunto o eliminato dall'elenco, gli elementi nell'elenco vengono spostati per adattarsi alla modifica. D'altra parte, la manipolazione è più rapida nell'elenco implementato da LinkedList in quanto non richiede lo spostamento di elementi nell'elenco in aggiunta o eliminazione degli elementi dall'elenco.
  7. ArrayList si comporta come un elenco in quanto implementa l'interfaccia Elenco mentre, LinkedList agisce come elenco e coda in quanto implementa sia List che Queue.

Conclusione:

In caso di aggiunta o eliminazione frequente degli elementi nell'elenco, è necessario utilizzare LinkedList poiché funziona meglio durante la manipolazione. Se la ricerca frequente viene applicata all'elenco, ArrayList è la scelta migliore, poiché si comporta meglio durante l'accesso agli elementi dall'elenco.