我很困惑为什么第 6 行仍然打印"A",即使我删除了第 5 行列表中的唯一元素。有人可以解释一下这里发生了什么吗?
fun main(args: Array<String>) {
var tree = Node("A", null, null)
val q: Queue<Node> = LinkedList()
q.add(tree)
tree = q.remove() // line 5 remove element in q and assign to tree so tree so should size 0
println(tree.data) // line 6, why does this still print "A" though?
}
// given
class Node {
var data: String
var left: Node? = null
var right: Node? = null
constructor(data: String) {
this.data = data
}
constructor(data: String, left: Node?, right: Node?) {
this.data = data
this.left = left
this.right = right
}
}
似乎 LinkedList.remove(( 在删除头部之前返回它的头部。以下是 LinkedList 的 java 8 源代码的链接: https://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/LinkedList.java
它将调用E unlinkFirst(Node<E> f)
方法(第 171 行(,并在删除之前返回元素。