我想了解如何從java中的LinkedList中刪除重複項。我搜索了一下,發現了一些答案,但是他們在Node中提到的一些答案中。我沒有從這個節點來自哪裏,因爲我沒有看到LinkedList中的任何方法以「節點」的形式返回值。如何通過保留訂單刪除鏈接列表中的重複
如果有人幫助我理解這一點,那將會很棒。
我想了解如何從java中的LinkedList中刪除重複項。我搜索了一下,發現了一些答案,但是他們在Node中提到的一些答案中。我沒有從這個節點來自哪裏,因爲我沒有看到LinkedList中的任何方法以「節點」的形式返回值。如何通過保留訂單刪除鏈接列表中的重複
如果有人幫助我理解這一點,那將會很棒。
經過下面的鏈接,這個回答你的問題很好:
http://www.geeksforgeeks.org/remove-duplicates-from-a-sorted-linked-list/
遍歷鏈表,將每個元素添加到散列表。當我們發現重複的元素時,我們刪除元素並繼續迭代。自從我們使用鏈表後,我們可以一次完成所有操作。
以下解決方案需要O(n)次,n是鏈接列表中元素的數量。
public static void deleteDups (LinkedList<Integer> list){
HashMap<Integer, Boolean> map = new HashMap<>();
Iterator<Integer> itr = list.iterator();
while(itr.hasNext()){
int nextNode = itr.next();
if(map.containsKey(nextNode)){
itr.remove();
} else {
map.put(nextNode, true);
}
}
}
您不能訪問節點,因爲這會暴露LinkedList的內部。你可以使用Iterator並迭代List;迭代器將跟蹤節點並在迭代器上調用remove。
感謝amansinghal響應。我沒有從這個LinkedListNode來自哪裏? – OneTwo
LinkListNode只是一個抽象的概念,基本上我們將鏈接列表中的條目稱爲節點。我更新了代碼,以便您更容易理解。 – AmanSinghal