【问题标题】:How can I remove duplicates out of an ArrayList? [duplicate]如何从 ArrayList 中删除重复项? [复制]
【发布时间】:2013-09-04 10:22:35
【问题描述】:
for (int i = 0; i < arrayP.size(); i++) {

        if (arrayP.get(i) == What to put here?) {
              arrayP.remove(i)
        }
}

如果我输入i+1,它只是并排比较。我怎样才能让它贯穿每个元素?

元素 1 然后贯穿整个 ArrayList。然后元素 2 运行 ArrayList。

【问题讨论】:

  • @JarrodRoberson 这个问题只是关于检测是否存在重复,而不是删除它们。
  • 不是重复的。我已投票决定重新开放。

标签: java arraylist


【解决方案1】:

您可以使用LinkedHashSet

list = new ArrayList<>(new LinkedHashSet<>(list));

如果元素的顺序无关紧要,您应该使用普通的HashSet。事实上,如果这样做是合乎逻辑的,您可能会首先考虑使用Set 而不是List。阅读两者之间的差异并选择更合适的结构。

【讨论】:

  • +1。不仅删除了重复项,还保留了列表中元素的初始顺序。
【解决方案2】:

试试这个

Set arrayPSet = new LinkedHashSet(arrayP);

现在 arrayPSet 保存你的数组删除它的重复值,然后你可以使用它,你可以 再次将您的列表重新分配给该集合,例如

arrayP = new ArrayList(arrayPSet);

现在已删除重复项

如果 arrayP 列表包含您创建的对象,请确保覆盖 equals() 和 hashCode() 方法

好的,我更新了它也许这行得通,我没有尝试顺序问题,但是有 TreeSet/Comparators/Comparables 解决方案,请先尝试此修改

【讨论】:

  • 失败。更改 ArrayList 元素的顺序。
  • @StephenC:我看不出这是一个硬性要求,本质上...
猜你喜欢
  • 2018-05-29
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2020-03-06
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多