我知道这是一个重复的问题,但我的问题不同。
帮助我理解这段代码的几行。
它从单个链表中删除重复节点。
public class DeleteDuplicates {
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;
}
System.out.println(n.next.data);
n = n.next;
}
}
public static void main(String[] args) {
LinkedListNode node_1 = new LinkedListNode("first");
LinkedListNode node_2 = new LinkedListNode("second");
node_1.next = node_2;
LinkedListNode node_3 = new LinkedListNode("third");
node_2.next = node_3;
LinkedListNode node_4 = new LinkedListNode("second");
node_3.next = node_4;
LinkedListNode current = node_1;
deleteDups(current);
while (current != null) {
System.out.println(current.data);
current = current.next;
}
}
}
我的问题是:
- LinkedList 怎么会
n
跳过重复节点?我不明白previous
节点的使用以及它如何帮助跳过重复节点。 - 用途有多重要
Hashtable
?例如,我可以使用任何其他集合HashSet
吗?