Depende de lo que necesite.
DoubleLinkedList
es una lista vinculada que le permite recorrer ida y vuelta a través de la lista de nodos. Use sus referencias prev
y next
para ir al nodo anterior o siguiente, respectivamente.
LinkedList
es una lista vinculada individualmente, por lo que no hay prev
punteros - si solo recorre el siguiente elemento de la lista todo el tiempo, esto es lo que necesita.
EDIT: Tenga en cuenta que los dos anteriores están destinados a ser utilizados internamente como bloques de construcción para estructuras de lista más complicados como MutableList
s que apoyan append eficiente y mutable.Queue
s.
Las dos colecciones anteriores tienen operaciones de adición de tiempo lineal.
ListBuffer
es una clase de memoria intermedia. Aunque está respaldado por una estructura de datos de lista enlazada de forma individual, no expone el puntero next
al cliente, por lo que solo puede recorrerlo mediante iteradores y el foreach
. Su uso principal es, sin embargo, como un buffer y un creador de listas inmutables: usted agrega elementos a través del +=
, y cuando llama al result
, obtiene de manera eficiente un immutable.List
funcional. A diferencia de las listas mutables e inmutables, tanto las operaciones de agregar como las de anteponer son de tiempo constante; puede agregarlas al final a través del +=
de manera muy eficiente.
MutableList
se usa internamente, por lo general, no lo use a menos que pretenda implementar una clase de colección personalizada en base a la estructura de datos de lista de enlace simple. Las colas mutables, por ejemplo, heredan esta clase. La clase MutableList
también tiene una operación eficiente de adición de tiempo constante, porque mantiene una referencia al último nodo en la lista.
Probablemente deberías expandirte sobre cómo vas a usarlo, porque en un sentido general, la manera idiomática de Scala no es usar listas mutables (en cambio usa pliegues o recursión con listas inmutables). –
Creo que sus listas pueden ser inmutables. Simplemente puede preceder a una lista inmutable y actualizar su entrada HashMap a esa lista recién creada. – ziggystar
Bueno, en ese caso, tendré que cambiar el hashmap en lugar de las listas. En este momento, no cambio el hashmap, pero cambio las listas. –