【发布时间】:2015-02-17 21:08:06
【问题描述】:
根据the docs,scala.collection.mutable.LinkedList 自 2.11 版本起已弃用。不幸的是,我没有找到可以替换它的东西。我需要一个可以在恒定时间内从 any 索引中删除项目的有序集合。
我应该使用什么?
【问题讨论】:
-
你能确认答案吗?
标签: scala collections linked-list
根据the docs,scala.collection.mutable.LinkedList 自 2.11 版本起已弃用。不幸的是,我没有找到可以替换它的东西。我需要一个可以在恒定时间内从 any 索引中删除项目的有序集合。
我应该使用什么?
【问题讨论】:
标签: scala collections linked-list
使用 MutableList 及其迭代器的remove 方法。它们提供 O(1) 移除。
【讨论】:
remove 方法。这就是为什么stackoverflow.com/questions/2803085/…
根据我对您的问题的了解,您希望遍历集合并即时更改它。对于除(现已弃用)scala.collection.mutable.LinkedList 或 scala.collection.mutable.DoubleLinkedList 之外的集合构造,这是不可能的。这种操作并不真正遵循 Scala 集合理念,因此 LinkedList 和 DoubleLinkedList 现在已被弃用。
但是,没有什么能阻止您在 Scala 代码中使用经典 Java 的 java.util.LinkedList 和相关迭代器。
除非您想检查您的设计并按照 Scala 的方式使用以下结构:map、filter、for、fold、reduce 等。例如,使用 filter 函数,您可以创建一个仅包含相关项目的新列表。
【讨论】:
大家好,从 2021 年开始 :) 2.12 版本的正确答案是正确的,但 2.13 - 实际上是另一个。我会引用documentation
collection.mutable.MutableList(在 2.12 中没有被弃用,但在 被认为是实现其他的实现细节 集合)。请改用 ArrayDeque 或 mutable.ListBuffer,或 列表和一个 var ;
【讨论】: