【发布时间】:2011-12-23 22:47:03
【问题描述】:
查看this 问题,提问者对List 中某些元素的第一个和最后一个实例感兴趣,似乎更有效的解决方案是使用可以从列表的末尾。但是,集合 API 中只有一种实现,并且它是可变的。
为什么没有不可变的版本?
【问题讨论】:
-
在我的脑海中,我想不出任何对双向链表的操作可以避免复制 all 元素(而单链表可以共享尾巴 - 例如 O(1)
cons)。对我来说,这听起来非常低效。想一想,我不知道 任何 库具有不可变的双向链表... -
在 Haskell 中,您要查找的数据结构是 Data.Sequence(它比双线列表稍微复杂一些,但在保持不变性的同时有许多性能改进)。如果 Scala 没有等效的不可变结构,我会感到惊讶。如果没有,那么让我们与开发人员联系并提出要求。
-
@Dan 我相信 Scala 中的等价物是 Vector。
标签: scala collections linked-list immutability