Questo post tratta solo di scala.collection.mutable.LinkedList
. Altre implementazioni non sono l'argomento di questa discussione.Caso di utilizzo per LinkedList
La mia domanda è: qual è il caso d'uso di questa classe? Trovo che abbia i problemi di entrambi i tipi di strutture mutevoli e immutabili mentre produce i benefici di nessuno. Lo dico perché:
- l'API guarda a me come se si trattasse di un API immutabili (
filter
,map
,drop
,take
ecc tutti restituire un nuovoLinkedList
invece di fare modifiche in-place) - tutto il benefici della lista collegata immutabili sono, almeno credo, non presente, vale a dire la massima condivisione tra strutture, dal momento che questi sono ancora mutevoli (attraverso
var elem
evar next
.
Quindi fondamentalmente abbiamo un tempo di accesso lineare, ap lineari tempo pendolare, spazio lineare ecc. e nulla da mostrare per esso nella complessità dello spazio o nella capacità di ragionare sul codice (tranne forse il prefisso O (1) ma è ancora il caso con elenchi immutabili).
Non riesco a vedere un vantaggio importante di questo tipo di struttura? Sto cercando misure oggettive e/o casi d'uso applicabili a questa classe.
Sembra un involucro sottile attorno alla classe immutabile. Beneficio: chi l'ha scritto è riuscito a farlo molto rapidamente, senza preoccuparsi di introdurre bugs? – bdares
@bdares cosa ti fa pensare che? Ho dato una rapida occhiata alla fonte e sembra che non sia così. –
hmmm ... come qualsiasi tipo mutabile, può essere referenziato da diversi puntatori e una volta modificato, i cambiamenti saranno visibili da tutti i puntatori. Questo non ha nulla a che fare con la complessità del tempo. – Oren