【发布时间】:2021-04-23 14:55:36
【问题描述】:
昨天我对 Java 中的双向链表有疑问,我的这部分代码有一个令人困惑的注释
public ADList<K,D> split(K key){
// caching the current list
ADList<K, D> temp = this;
// looking for the key k to be split on
while(temp.head.key != key && temp.head.succ != null){
temp.head = temp.head.succ;
}
...
}
在这里,我保存了调用该方法的双向链表的当前实例,以查找具有传递给函数的键的节点。我这样做是为了不修改当前实例的列表。
但有人告诉我这是错误的,temp 的副本实际上并不是列表的副本,而是指向当前实例列表的指针 的副本。这意味着该函数将更改当前实例而不是副本。
我错了,还是那个人把 Java 和 C 混为一谈了? (大声笑)我真的很感激一些见解 :) 非常感谢!
【问题讨论】:
-
ADList<K,D> temp = this不会创建对象的副本。所以你没有错。