Scala DoubleLinkedList替换

时间:2014-12-24 11:24:49

标签: scala data-structures standard-library

自Scala 2.11.0(http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.DoubleLinkedList $)起,不推荐使用DoubleLinkedList。为什么是这样?它似乎并不是一个明显的替代品。是否有继任者的计划?

2 个答案:

答案 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