이 중복 문제는 알고 있지만 내 질문은 다릅니다.
이 코드의 몇 줄을 이해할 수있게 도와주세요.
단일 링크 된 목록에서 중복 노드를 제거합니다.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
)을 사용할 수 있습니까?
감사합니다. 그게 내가 필요한거야. –