【问题标题】:linkedlist remove duplication node from java链表从java中删除重复节点
【发布时间】:2019-01-01 20:17:33
【问题描述】:
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;
    }
}

我不知道为什么这个功能可以去除重复。

【问题讨论】:

  • 什么是删除重复?
  • 你熟悉哈希集吗?

标签: java linked-list duplicates


【解决方案1】:

如果数据已经存在于集合中,这是您绕过当前节点的地方。

if(set.contains(n.data)) {
  previous.next = n.next;
}

在这个语句中,previous.next = n.next;绕过了当前节点,前一个节点的next指针直接引用了当前节点的next指针。所以最终linkedList不会保存重复值。

【讨论】:

    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多