【问题标题】:Does Scala have Double Side Queue similar to Java Deque or Python deque?Scala 是否有类似于 Java Deque 或 Python deque 的双边队列?
【发布时间】:2018-04-02 20:54:59
【问题描述】:

Scala 是否有类似于 Java Deque 或 Python deque 的 Double Side Queue?

我在 Scala 2.12 API 中只看到堆栈和队列,但只是想仔细检查一下。

【问题讨论】:

  • Java Deque 怎么样?为什么这不起作用?
  • 曾经有mutable.DoubleLinkedList,但它被认为太笨拙且不足以维护,因此现在由于某种原因已弃用。您能否更准确地描述实际问题,您需要双端队列做什么?
  • 谢谢。那我就用 Java Deque。

标签: scala


【解决方案1】:

您可以使用Vector.drop or Vector.dropRight

val v = Vector(1,2,3)
v :+ 4 // Vector(1, 2, 3, 4)
0 +: v // Vector(0, 1, 2, 3)
v.drop(1) // Vector(2, 3)
v.dropRight(1) // Vector(1, 2)

【讨论】:

  • 这是 O(log(n)) 复杂度,因为 Vector 是一棵树。像 Scala 2.13 中的 ArrayDeque 这样的双面队列是 O(1) 常数时间,用于添加到队列的头/尾
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2017-05-05
  • 2010-09-25
  • 2021-05-08
  • 1970-01-01
  • 2011-07-14
  • 2020-08-09
相关资源
最近更新 更多