Differenza chiave – ArrayList vs LinkedList
Le raccolte sono utili per memorizzare i dati. In un array normale, la dimensione dell'array è fissa. A volte è necessario creare array che possono crescere secondo necessità. I linguaggi di programmazione come Java hanno raccolte. È un framework con un insieme di classi e interfacce. Serve come contenitore per un gruppo di elementi. Le raccolte consentono di memorizzare, aggiornare, recuperare set di elementi. Aiuta a lavorare con strutture di dati come elenchi, insiemi, alberi e mappe. L'elenco è un'interfaccia del framework Collection. ArrayList e LinkedList sono due classi nel framework delle raccolte. Implementano l'interfaccia di raccolta e l'interfaccia List. Questo articolo illustra la differenza tra ArrayList e LinkedList. ArrayList è una classe che estende AbstractList e implementa l'interfaccia List, che utilizza internamente un array dinamico per memorizzare elementi di dati. LinkedList è una classe che estende AbstractSequentialList e implementa le interfacce List, Deque e Queue, che utilizzano internamente un elenco doppiamente collegato per archiviare elementi di dati. Questa è la differenza fondamentale tra ArrayList e LinkedList.
Cos'è ArrayList?
La classe ArrayList viene utilizzata per creare array dinamici. A differenza di un array normale, la dimensione di un array dinamico non è fissa. Un oggetto creato utilizzando la classe ArrayList può memorizzare un insieme di elementi nell'elenco. La capacità aumenta automaticamente, quindi il programmatore può aggiungere elementi all'elenco. La classe ArrayList estende la classe AbstractList che implementa l'interfaccia List. Pertanto, i metodi dell'interfaccia List possono essere utilizzati da ArrayList. Per accedere agli elementi, viene utilizzato il metodo get(). Il metodo add() può essere utilizzato per aggiungere elementi all'elenco. Il metodo remove() viene utilizzato per rimuovere un elemento dall'elenco. Fare riferimento al programma sottostante.
Figura 01: Esempio di ArrayList
Secondo il programma sopra, viene creato un oggetto di ArrayList. Usando il metodo add, gli elementi possono essere aggiunti dinamicamente. Gli elementi "A", "B", "C", "D" ed "E" vengono aggiunti utilizzando il metodo di aggiunta. Il metodo remove viene utilizzato per rimuovere un elemento dall'elenco. Quando si passa 4 al metodo di rimozione, la lettera nel 4° indice che è "E" viene rimossa dall'elenco. Quando si scorre l'elenco utilizzando il ciclo for, verranno stampate le lettere A, B, C e D.
Cos'è LinkedList?
Simile a ArrayList, LinkedList viene utilizzato per memorizzare elementi di dati in modo dinamico. Un oggetto creato utilizzando la classe LinkedList può memorizzare un insieme di elementi nell'elenco. La capacità aumenta automaticamente, quindi il programmatore può aggiungere elementi all'elenco. Utilizza internamente una lista doppiamente collegata per memorizzare i dati. In un elenco doppiamente collegato, i dati vengono archiviati come nodi. Ogni nodo contiene due collegamenti. Il primo collegamento punta al nodo precedente. Il collegamento successivo punta al nodo successivo nella sequenza.
La classe LinkedList estende la classe AbstractSequentialList e implementa l'interfaccia List. Pertanto, i metodi dell'interfaccia List possono essere utilizzati dalla LinkedList. Il metodo get() può essere utilizzato per accedere agli elementi dell'elenco. Il metodo add() può essere utilizzato per aggiungere elementi all'elenco. Il metodo remove() viene utilizzato per rimuovere un elemento dall'elenco. Fare riferimento al programma sottostante.
Figura 02: Esempio con LinkedList
Secondo il programma sopra, viene creato un oggetto di LinkedList. Usando il metodo add, gli elementi possono essere aggiunti dinamicamente. Gli elementi "A", "B", "C", "D" ed "E" vengono aggiunti utilizzando il metodo di aggiunta. Il metodo remove viene utilizzato per rimuovere un elemento dall'elenco. Quando si passa 4 al metodo di rimozione, la lettera nel 4° indice che è "E" viene rimossa dall'elenco. Quando si esegue l'iterazione utilizzando il ciclo for, verranno stampate le lettere A, B, C e D.
Quali sono le somiglianze tra ArrayList e LinkedList?
- Sia ArrayList che LinkedList implementano l'interfaccia List.
- Sia ArrayList che LinkedList possono contenere elementi duplicati.
- Sia ArrayList che LinkedList mantengono l'ordine di inserimento.
Qual è la differenza tra ArrayList e LinkedList?
ArrayList vs LinkedList |
|
ArrayList è una classe che estende AbstractList e implementa l'interfaccia List che utilizza internamente un array dinamico per memorizzare elementi di dati. | LinkedList è una classe che estende AbstractSequentialList e implementa le interfacce List, Deque, Queue, che internamente utilizza una lista doppiamente collegata per memorizzare elementi di dati. |
Accesso agli elementi | |
L'accesso agli elementi di ArrayList è più veloce di un LinkedList. | L'accesso agli elementi di LinkedList è più lento rispetto a un ArrayList. |
Elementi manipolatori | |
La manipolazione di elementi di ArrayList è più lenta di una LinkedList. | La manipolazione di elementi di LinkedList è più veloce di una ArrayList. |
Comportamento | |
ArrayList funziona come una lista. | LinkedList funziona come una lista e una coda. |
Riepilogo – ArrayList vs LinkedList
Il framework di raccolta consente di lavorare con strutture di dati come elenchi, alberi, mappe e insiemi. L'elenco è un'interfaccia del framework di raccolta. Questo articolo ha discusso la differenza tra ArrayList e LinkedList. ArrayList è una classe che estende AbstractList e implementa l'interfaccia List che utilizza internamente un array dinamico per archiviare elementi di dati. LinkedList è una classe che estende AbstractSequentialList e implementa le interfacce List, Deque, Queue, che internamente utilizza un elenco doppiamente collegato per archiviare elementi di dati. Questa è la differenza tra ArrayList e LinkedList.