当前位置:  开发笔记 > 编程语言 > 正文

在Java中删除数组中重复项的最佳方法是什么?

如何解决《在Java中删除数组中重复项的最佳方法是什么?》经验,为你挑选了2个好方法。

我有一个对象数组需要删除/过滤重复项.我只是在Object元素上覆盖equals&hachCode,然后将它们粘贴在Set中......但我认为我至少应该轮询stackoverflow以查看是否有其他方法,或许某些其他API的聪明方法?



1> brabster..:

我同意你的覆盖方法hashCode(),equals()并使用实现的东西Set.

这样做也使任何其他开发人员都清楚地知道需要非重复的特性.

另一个原因 - 您现在可以选择最符合您需求的实施方案:

HashSet的

TreeSet中

LinkedHashSet

并且您不必更改代码以在将来更改实现.



2> Markus Lausb..:

我在网上发现了这个

以下两种方法允许您删除ArrayList中的重复项.removeDuplicate不维护removeDuplicateWithOrder维护订单的顺序,其中包含一些性能开销.

    removeDuplicate方法:

    /** List order not maintained **/
    public static void removeDuplicate(ArrayList arlList)
    {
     HashSet h = new HashSet(arlList);
     arlList.clear();
     arlList.addAll(h);
    }
    

    removeDuplicateWithOrder方法:

    /** List order maintained **/
    public static void removeDuplicateWithOrder(ArrayList arlList)
    {
       Set set = new HashSet();
       List newList = new ArrayList();
       for (Iterator iter = arlList.iterator(); iter.hasNext();) {
          Object element = iter.next();
          if (set.add(element))
             newList.add(element);
       }
       arlList.clear();
       arlList.addAll(newList);
    }
    

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有