linkedlist从Java删除重复节点

时间:2018-07-25 05:51:44

标签: java linked-list duplicates

public void deleteDups(Node n) {
    HashSet<Object> set = new HashSet<>();
    Node previous = null;
    while (n != null) {
        if(set.contains(n.data)) {
            previous.next = n.next;
        } else {
            set.add(n.data);
            previous = n;
        }
        n = n.next;
    }
}

我不知道为什么此功能可以删除重复项。

1 个答案:

答案 0 :(得分:0)

如果数据集中已经存在,则在这里绕过当前节点。

if(set.contains(n.data)) {
  previous.next = n.next;
}

在此语句中,previous.next = n.next;被绕过当前节点,并且上一个节点的下一个指针直接引用当前节点的下一个指针。所以最后,linkedList将不会包含重复的值。