🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

LinkedList in Java

Codegrind TeamJul 22 2023

Le LinkedList sono un’altra importante struttura dati offerta dalla libreria di collezioni di Java, che si differenzia dagli ArrayList. In questa lezione, esploreremo cosa sono le LinkedList, le loro proprietà, la sintassi di base e vedremo come differiscono dagli ArrayList.

Concetto delle LinkedList

Le LinkedList in Java sono una struttura dati collegata, in cui ogni elemento (nodo) contiene un riferimento all’elemento successivo nella sequenza. Questo consente di inserire e rimuovere elementi in modo efficiente, a differenza degli ArrayList.

Proprietà delle LinkedList

Le LinkedList in Java hanno le seguenti proprietà:

  • Struttura Collegata: Ogni elemento (nodo) contiene un riferimento all’elemento successivo, creando una struttura collegata.

  • Inserimento/Rimozione Efficienti: Le LinkedList sono ottimizzate per l’inserimento e la rimozione di elementi, poiché richiedono solo aggiornamenti dei riferimenti.

  • Accesso Meno Efficiente: L’accesso casuale agli elementi in una LinkedList è meno efficiente rispetto agli ArrayList.

Sintassi di Creazione di una LinkedList**

import java.util.LinkedList;

public class EsempioLinkedList {
    public static void main(String[] args) {
        // Creazione di una LinkedList di interi
        LinkedList<Integer> numeri = new LinkedList<>();
    }
}

Accesso, Modifica e Aggiunta di Elementi

Le operazioni di accesso, modifica e aggiunta di elementi sono simili a quelle degli ArrayList.

numeri.add(5); // Aggiunta di un elemento
numeri.addFirst(1); // Aggiunta in testa
numeri.addLast(10); // Aggiunta in coda
numeri.set(1, 8); // Modifica dell'elemento all'indice 1

Rimozione di Elementi

Anche le LinkedList offrono metodi per rimuovere elementi.

numeri.remove(0); // Rimozione dell'elemento all'indice 0
numeri.removeFirst(); // Rimozione della testa
numeri.removeLast(); // Rimozione della coda

Iterazione attraverso una LinkedList

L’iterazione può essere effettuata con un ciclo for-each.

for (Integer numero : numeri) {
    System.out.println(numero);
}

ArrayList vs LinkedList

Gli ArrayList e le LinkedList hanno differenze significative:

  • Accesso: Gli ArrayList consentono un accesso casuale efficiente, mentre le LinkedList sono migliori per inserimenti/rimozioni.

  • Inserimenti/Rimozioni: Le LinkedList sono più efficienti per inserimenti/rimozioni frequenti, poiché coinvolgono solo aggiornamenti di riferimenti.

  • Memoria: Le LinkedList richiedono più memoria a causa dei riferimenti aggiuntivi, mentre gli ArrayList hanno memoria più compatta.

Conclusione

Le LinkedList sono un’opzione preziosa quando sono necessari inserimenti e rimozioni frequenti e quando l’accesso casuale non è una priorità. Comprendere le loro proprietà, la sintassi di base e le differenze rispetto agli ArrayList ti consentirà di selezionare la struttura dati più adatta alle tue esigenze di programmazione.