在 Scala 中:似乎没有remove()
方法LinkedList
,由于某种原因我无法理解。虽然有一个DoubleLinkedList
,但我不需要双链表。
另外,我怎样才能将current
元素设置为第一个?我怎么知道它什么时候结束(是null
吗?)
在 Scala 中:似乎没有remove()
方法LinkedList
,由于某种原因我无法理解。虽然有一个DoubleLinkedList
,但我不需要双链表。
另外,我怎样才能将current
元素设置为第一个?我怎么知道它什么时候结束(是null
吗?)
中没有current
元素LinkedList
。
中只有 2 个字段LinkedList
:elem
(or head
) for element 和next
(or tail
) for LinkedList
。
您可以使用 测试是否LinkedList
为空isEmpty
。每个都LinkedList
包含一个空LinkedList
的,因为它是最深的尾巴。有关 ASCII 插图,请参阅文档。
您可以像这样删除第 N 个元素(如果有):
var current = myLinkedList.drop(n-2)
current.next = current.next.next
例子:
scala> val myList = LinkedList(1,2,3,4,5)
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5)
scala> val current = myList.drop(1)
current: scala.collection.mutable.LinkedList[Int] = LinkedList(2, 3, 4, 5)
scala> current.next = current.next.next
current.next: scala.collection.mutable.LinkedList[Int] = LinkedList(4, 5)
scala> myList
res0: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 4, 5)
你不能以这种方式删除第一个元素,但你可以忘记它:
scala> var myList = LinkedList(1,2,3,4,5)
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5)
scala> myList = myList.next
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(2, 3, 4, 5)
首先,是否有特殊原因需要 LinkedList 而不是 Scala 中的标准 List?
正如 scaladoc 中所警告的那样,您可以很容易地以 LinkedList 结束 NPE,而 List 不会有这个问题,除非您实际引入 null 值。
List tail 方法通常是您所需要的。请首先考虑这种方法,并且仅在绝对必要时才求助于专门的课程。