Я знаю, что это дублирующаяся проблема, но мой вопрос другой.
Помогите мне понять несколько строк этого кода.
Удаляет повторяющиеся узлы из одного связанного списка.LinkedList: Удаление дубликатов
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
?
Спасибо. Это то, что мне нужно. –