これは重複した問題であることは知っていますが、私の質問は異なります。
このコードの数行を理解するのを手伝ってください。
単一のリンクされたリストから重複するノードを削除します。
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
か?