[英]Setting Value Linked List Nodes Java
我一直在研究如何從未排序的鏈接列表中刪除重復項,並對Java中的引用感到困惑:
public static void deleteDups (LinkedListNode n){
Hashtable table = new Hashtable();
LinkedListNode previous = null;
while(n!=null){
if(table.containsKey(n.data)){
previous.next = n.next;
} else {
table.put(n.data, true);
previous = n;
}
n = n.next;
}
}
當我們執行n = n.next
,為什么previous
的值也沒有被修改,因為previous
指向n
?
變量n
實際上沒有保存LinkedListNode
的實例。
變量n
包含一個數字。 例如,它可能包含數字0x04AF34ED
。
這個號碼是一個地址 。 如果處理器在計算機的RAM中尋找該地址,它將找到與LinkedListNode
關聯的數據。
變量previous
也包含一個數字。 在源代碼的第10行,它恰好擁有與變量n
相同的數字,這意味着它們指向同一對象。 在源代碼的第11行,為變量n
提供了一個新數字-對象n.next
的地址。 分配給previous
的數字不變。 它仍然保留舊LinkedListNode
的地址。
在Java中,每次創建新對象(例如List list = new ArrayList()
,實際上是在創建對該對象的引用:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.