我在尝试理解基本节点列表的代码时遇到问题。节点(ListNode 类)包含三个变量;一个字符串“键”,一个值“值”,然后是另一个节点“下一个”。到现在为止还挺好。然而,在名为 ListMap 的类中,我们有 put() 方法,我很难理解:
public void put(String key, int value) {
ListNode l = search(key, head);
if ( l==null ) {
head = new ListNode(key, value, head);
} else {
l.value = value;
}
protected static ListNode search(String key, ListNode l) {
if (l==null) {
return null;
} else if (key.equals(l.key)) {
return l;
} else {
return search(key, l.next);
}
}
该方法搜索字符串“key”,如果列表中有一个,则将其值替换为作为第二个参数给出的新值。
我无法理解的是这个变量 l,它被分配了与第一个参数共享相同“键”或字符串的节点。
当 l.value 设置为 value 时,为什么这会影响列表?
变量 l 不只是列表中一个节点的副本,而不是实际节点吗?
对于这样一个令人困惑的问题,我提前道歉,但我希望你们中的一个人能理解它。