Dipende da ciò che ti serve.
DoubleLinkedList
è una lista collegata che permette di attraversare avanti e indietro attraverso la lista dei nodi. Utilizzare i suoi riferimenti prev
e next
per passare rispettivamente al nodo precedente o successivo.
LinkedList
è un elenco collegato singolarmente, quindi non ci sono i puntatori prev
- se si attraversano sempre l'elemento successivo dell'elenco tutto il tempo, questo è ciò che è necessario.
EDIT: Si noti che i due sopra sono destinati ad essere utilizzati internamente come blocchi di costruzione per Strutture lista più complicati come MutableList
s che supportano accodamento efficiente e mutable.Queue
s.
Le due raccolte sopra entrambe hanno operazioni di accodamento in tempo lineare.
ListBuffer
è una classe di buffer. Sebbene sia supportato da una struttura di dati di elenchi collegati singolarmente, non espone il puntatore next
al client, quindi è possibile attraversarlo solo utilizzando gli iteratori e lo foreach
. suo utilizzo principale è, tuttavia, come un buffer e un costruttore lista immutabile - si aggiunge elementi ad esso tramite +=
, e quando si chiama result
, è molto efficiente tornare funzionale immutable.List
. A differenza delle liste mutabili e immutabili, entrambe le operazioni di accodamento e di antefatto sono a tempo costante - è possibile aggiungere alla fine tramite +=
in modo molto efficiente.
MutableList
viene utilizzato internamente, di solito non lo si utilizza a meno che non si preveda di implementare una classe di raccolta personalizzata in base alla struttura di dati dell'elenco collegato separatamente. Ad esempio, le code mutabili ereditano questa classe. La classe MutableList
ha anche un'efficiente operazione di aggiunta costante, poiché mantiene un riferimento all'ultimo nodo nell'elenco.
Probabilmente si dovrebbe espandere su come userete esso - perché in un senso generale, il modo in cui Scala idiomatica non è quello di utilizzare gli elenchi mutabili a tutti (anziché utilizzare pieghe o ricorsione con liste immutabili). –
Penso che le tue liste possano essere immutabili. Puoi semplicemente anteporre un elenco immutabile e aggiornare la tua voce HashMap a quella appena creata. – ziggystar
Bene, in tal caso, dovrò cambiare l'hashmap anziché gli elenchi. Al momento, non cambio l'hashmap, ma cambio le liste. –