13
我正在查看using a DoubleLinkedList。它的remove()方法說「從雙鏈表中刪除當前節點。」,但在頁面中沒有其他對當前的引用。Scala DoubleLinkedList中的當前元素是什麼?
什麼是當前節點,我該如何設置它,當然這不是刪除項目的唯一方法?
我正在查看using a DoubleLinkedList。它的remove()方法說「從雙鏈表中刪除當前節點。」,但在頁面中沒有其他對當前的引用。Scala DoubleLinkedList中的當前元素是什麼?
什麼是當前節點,我該如何設置它,當然這不是刪除項目的唯一方法?
一個DoubleLinkedList
是在同一時間列表本身和列表節點,類似於::
爲常規List
。您可以分別使用next
和prev
從一個單元格導航到下一個單元格或前一個單元格,並獲取elem
單元格的值。
scala> val list = collection.mutable.DoubleLinkedList(1,2,3,4,5)
list: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5)
scala> list.next.next.remove() // list.next.next points on 3rd cell
scala> list
res0: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 4, 5)
如果刪除了第一個單元格要小心,因爲你需要重新分配您的VAR拿着名單到下一個單元:
scala> val list = collection.mutable.DoubleLinkedList(1,2,3,4,5)
list: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5)
scala> list.remove() // remove first item
scala> list // this is now a 'dangling' cell, although it still points to the rest of the list
res6: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5) // uh? didn't I remove the first cell?
scala> list.next.prev // we can check that it is not pointed back to by its next cell
res7: scala.collection.mutable.DoubleLinkedList[Int] = null
好答案 - 一個有點羞恥的文檔的AREN和StackOverflow一樣好! –
有沒有辦法讓回移到第一次而不用多次調用prev? – user1377000
不,你必須一直調用'prev'直到找到'null'。 –