Java删除ArrayList中的重复对象

egg*_*ter 8 java arraylist duplicates

我有一个非常冗长的ArrayList,其中包含一些对象,但无疑是重复的.找到并删除这些重复项的最佳方法是什么.注意:我编写了一个布尔返回的compareObjects()方法.

e.d*_*vic 32

List<Item> result = new ArrayList<Item>();
Set<String> titles = new HashSet<String>();

for( Item item : originalList ) {
    if( titles.add( item.getTitle() ) {
        result.add( item );
    }
}
Run Code Online (Sandbox Code Playgroud)

参考

设置
Java数据结构

  • @JoshM _All_集应该可以防止重复.来自[javadoc](http://docs.oracle.com/javase/7/docs/api/java/util/Set.html)的第一行是"不包含重复元素的集合". (4认同)
  • `HashSet`可以防止重复. (2认同)

ash*_*999 8

你提到过写一个compareObjects方法.实际上,您应该覆盖两个对象相等时equals返回的方法true.

话虽如此,我只会返回一个包含原始元素的新列表:

ArrayList<T> original = ...
List<T> uniques = new ArrayList<T>();
for (T element : original) {
  if (!uniques.contains(element)) {
    uniques.add(element);
  }
}
Run Code Online (Sandbox Code Playgroud)

这仅在您覆盖时有效equals.有关更多信息,请参阅此问题.


归档时间:

查看次数:

53584 次

最近记录:

9 年,2 月 前