首页 > 其他 > 详细

ArrayList元素怎么去重的两种方法

时间:2020-02-09 00:05:22      阅读:589      评论:0      收藏:0      [点我收藏+]

方法1,通过Set实现类包裹一层返回,缺点是会打乱原有集合的顺序

public static <T> List<T> listRepeatUseSet(List<T> list){
    HashSet<T> hashSet = new HashSet<>(list);
    return new ArrayList<>(hashSet);
}

 方法2,新建一个新的ArrayList集合,这里不能指定大小因为当前传递过来的集合是有重复的所以长度大小是不正确的,如果当前传递过来的ArrayList集合中的元素是自定义数据那么需要重写equals和hashCode方法,其实当前场景只需要重写equals方法因为要使用到ArrayList中的contains方法,而这个方法中底层是使用对象的equals方法做比较。

public static <T> List<T> listRepeatUseIteration(List<T> list){
    List<T> arrayList = new ArrayList<>();
    ListIterator<T> listIterator = list.listIterator();
    while (listIterator.hasNext()) {
        T next = listIterator.next();
        if(!arrayList.contains(next)){
            arrayList.add(next);
        }
    }
    return arrayList;
}

 

ArrayList元素怎么去重的两种方法

原文:https://www.cnblogs.com/alonely/p/12285735.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!