Le liste sono strutture dati che implementano l’interfaccia List e memorizzano i dati in modo sequenziale e dinamico. Ciò significa che le liste possono aumentare o diminuire la loro dimensione in base alle esigenze.

Le liste più utilizzate sono ArrayList e LinkedList.

ArrayList

L’ArrayList è una struttura dati ad accesso casuale che permette di accedere direttamente a ogni elemento della lista. È implementata attraverso un array a cui è stata aggiunta una funzionalità di ridimensionamento automatico.

Caratteristiche dell’ArrayList:

  • Accesso casuale: è possibile accedere direttamente a ogni elemento della lista.
  • Ridimensionamento automatico: aumentano o diminuiscono automaticamente la dimensione dell’array sottostante per fare spazio a nuovi elementi o liberare spazio.

LInkedList

In una LinkedList, ogni elemento è rappresentato da un nodo che contiene un valore e un riferimento al nodo successivo.

Caratteristiche della LinkedList:

  • Accesso sequenziale: non sono ad accesso casuale, ma ad accesso sequenziale. Ciò significa che per accedere a un elemento, si deve prima passare per tutti i suoi precedenti.
  • Inserimento e rimozione: le LinkedList sono utili perché permettono di aggiungere o rimuovere un nodo alla lista senza dover rilocare tutta la struttura dati.

Svantaggi della LinkedList

  • Accesso lento: tempi di accesso più lenti rispetto ad altre strutture dati, a causa della necessità di scorrere la lista per accedere a un elemento.
  • Memoria aggiuntiva: le LinkedList richiedono memoria aggiuntiva per i riferimenti ai nodi successivi

oss: LinkedList implementa anche l’interfaccia queue (coda).