Scala可变列表 - 在中间插入元素

时间:2015-11-26 10:24:36

标签: scala collections

如何在DoubleLinkedList的中间实现插入元素而不应对它? 一般来说,我想在集合中找到一些元素,然后在它之后插入一个新元素。

有方法DoubleLinkedList.insert,但我不太清楚它是如何工作的。在文档中,它以这种方式描述:

  

插入此链接列表当前位置的链接列表

但是链表中的当前位置是什么?我该怎么设置它?

我希望有O(1)插入时间。

3 个答案:

答案 0 :(得分:1)

要在DoubleLinkedList的中间插入元素,首先要找到你的“中间”字样。然后插入:

val list = mutable.DoubleLinkedList(...)
list.next.next....insert(insertion)

答案 1 :(得分:1)

首先,您无法使用insert插入元素,因为它需要DoubleLinkedList作为参数

  

def insert(即:DoubleLinkedList [A]):单位

只需使用indexWhereapply方法,例如将30替换为3:

yourlist(yourlist.indexWhere(_ == 30)) = 3

答案 2 :(得分:0)

使用span将集合分成保存条件的初始元素和第一个项目不存在的元素; e.g

val (l,r) = DoubleLinkedList(1,2,3,4,5).span(_ != 3)
l = DoubleLinkedList(1, 2)
r = DoubleLinkedList(3, 4, 5)

然后将值3替换为33,如此

l ++ DoubleLinkedList(33) ++ r.tail

注意在Scala 2.11.6中使用-deprecation运行REPL以注意弃用警告,例如

warning: object DoubleLinkedList in package mutable is deprecated:
Low-level linked lists are deprecated.