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;
}
}
我不知道为什么这个功能可以消除重复。
如果集合中已经存在数据,则绕过当前节点。
if(set.contains(n.data)) {
previous.next = n.next;
}
在该语句中,previous.next = n.next;
当前节点被绕过,上一个节点的下一个指针直接引用当前节点的下个指针。因此,linkedList最终不会包含重复的值。