Esta publicación solo trata sobre scala.collection.mutable.LinkedList
. Otras implementaciones no son el tema de este hilo.Caso de uso para LinkedList
Mi pregunta es: ¿cuál es el caso de uso de esta clase? Encuentro que tiene los problemas de ambos tipos de estructuras, mutables e inmutables, al mismo tiempo que produce los beneficios de ninguna. Lo digo porque:
- la API me parece como si se tratara de una API inmutable (
filter
,map
,drop
,take
etc todo devolver una nuevaLinkedList
en lugar de hacer modificaciones en el lugar) - toda la beneficios de la lista enlazada son inmutables, al menos, supongo, no está presente, es decir, el máximo intercambio entre las estructuras, ya que esos son todavía mutable (a través de
var elem
yvar next
.
Así que básicamente tenemos un tiempo de acceso lineal, lineal ap tiempo de espera, espacio lineal, etc. y nada que mostrar en complejidad del espacio o en la capacidad de razonar sobre el código (excepto tal vez el preajuste O (1) pero sigue siendo el caso con las listas inmutables).
¿No veo un beneficio importante de este tipo de estructura? Estoy buscando medidas objetivas y/o casos de uso aplicables a esta clase.
Parece una envoltura delgada alrededor de la clase inmutable. Beneficio: quien lo escribió pudo hacerlo muy rápido, sin preocuparse por la introducción de errores? – bdares
@bdares ¿qué te hace pensar eso? Eché un vistazo rápido a la fuente y parece que no es tal. –
hmmm ... como cualquier tipo mutable, se puede hacer referencia a partir de varios punteros y una vez editados, los cambios se verán desde todos los punteros. Esto no tiene nada que ver con la complejidad del tiempo. – Oren