自Scala 2.11.0(http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.DoubleLinkedList $)起,不推荐使用DoubleLinkedList。为什么是这样?它似乎并不是一个明显的替代品。是否有继任者的计划?
答案 0 :(得分:0)
"特殊和危险" API,如提交消息和弃用中所述,将其汇总。
总的方向是减少标准库的大小,特别是集合的大小,因此替换的可能性(如果有的话)只是作为重新想象和重新设计的一部分。工程替代馆藏库。 (正在努力。)
最后的评论on this issue属于顺序,"这怎么可能起作用?"令人惊讶地难以将2.8集合中的许多标准API与可变性协调起来,这是将公共接口后面的可变和不可变集合统一起来的实验达到its hype的一个原因。
答案 1 :(得分:0)
从2.12.6开始,在回答DoubleLinkedList
的替代方法时,没有不赞成使用的收集类型在两端提供恒定的时间添加/删除。 Vector
接近了,但是无法从中删除元素,只能替换(使用update
)。我有类似的要求,最终使用了java.util.LinkedList
。是的,这是一个用例,其中Java提供了Scala中不存在的功能。
示例代码:
import scala.collection.JavaConverters._
val xs = new java.util.LinkedList[T]().asScala
// remove from beginning, O(1)
xs.remove(0)
// remove from end, O(1)
xs.remove(xs.size - 1)
// append, O(1)
xs += e
// prepend, O(1)
e +=: xs