La classe LinkedList è una classe che implementa le interfacce List, Deque e Queue. Rappresenta una lista doppiamente collegata in cui ogni elemento (nodo) mantiene un riferimento sia al nodo precedente che a quello successivo. A differenza di ArrayList, le operazioni di inserimento e rimozione sono molto efficienti in qualsiasi punto della lista, ma l’accesso casuale per indice è più lento.
Package: java.util. Interfacce di riferimento: List, Queue e Deque (che estendono Collection).
CARATTERISTICHE PRINCIPALI
- Struttura interna: lista doppiamente collegata (doppio puntatore: nodo precedente e successivo).
- Ordine garantito: mantiene l’ordine di inserimento.
- Accesso per indice: tempo O(n), più lento rispetto a
ArrayList. - Inserimenti e rimozioni: veloci in testa, in coda e in punti intermedi (non serve spostare elementi).
- Non sincronizzata: non è thread-safe.
- Elementi null: ammessi.
- Implementa anche una coda: può essere usata come
QueueoDeque(lista doppia).
METODI PRINCIPALI
| Metodo | Descrizione |
|---|---|
add(E e) | Aggiunge in coda. |
addFirst(E e) | Aggiunge in testa. |
addLast(E e) | Aggiunge in coda (equivalente a add(e)). |
get(int index) | Restituisce l’elemento all’indice indicato. |
getFirst() | Restituisce il primo elemento. |
getLast() | Restituisce l’ultimo elemento. |
set(int index, E e) | Sostituisce l’elemento all’indice indicato. |
remove() | Rimuove e restituisce il primo elemento. |
remove(int index) | Rimuove l’elemento all’indice indicato. |
removeFirst() | Rimuove il primo elemento. |
removeLast() | Rimuove l’ultimo elemento. |
size() | Restituisce il numero di elementi. |
isEmpty() | Verifica se la lista è vuota. |
contains(Object o) | Verifica se la lista contiene un elemento. |
clear() | Rimuove tutti gli elementi. |
iterator() | Restituisce un Iterator per iterare sulla lista. |
forEach(Consumer action) | Esegue un’azione per ogni elemento. |
ESEMPIO
import java.util.LinkedList;
public class EsempioLinkedList {
public static void main(String[] args) {
// Creazione di una LinkedList di Stringhe
LinkedList<String> listaSlime = new LinkedList<>();
// Aggiunta di elementi
listaSlime.add("Papa V");
listaSlime.add("Nerissima Serpe");
listaSlime.add("Fritu");
// Inserimento in testa e in coda
listaSlime.addFirst("Shark");
listaSlime.addLast("Apparecchiato");
// Stampa della lista
System.out.println("Lista Slime: " + listaSlime);
// Accesso al primo e ultimo elemento
System.out.println("Primo elemento: " + listaSlime.getFirst());
System.out.println("Ultimo elemento: " + listaSlime.getLast());
// Modifica di un elemento
listaSlime.set(2, "Luigi");
// Rimozione di elementi
listaSlime.remove("Fritu");
listaSlime.removeFirst();
listaSlime.removeLast();
// Verifica presenza
System.out.println("C'è Papa? " + listaSlime.contains("Papa V"));
// Iterazione con for-each
System.out.println("\nLista finale:");
for (String slime : listaSlime) {
System.out.println("- " + slime);
}
}
}
Output possibile:
Lista slime: [Shark, Papa V, Nerissima Serpe, Fritu, Apparecchiato]
Primo elemento: Shark
Ultimo elemento: Apparecchiato
C è Papa? true
Lista finale:
- Papa V
- Luigi
- Nerissima Serpe