• List去重的五种方法


    List 去重的五种方法
    一、借助 Set 的特性进行去重
    /**
    * 去除重复数据
    * 由于Set的无序性,不会保持原来顺序
    * @param list
    */
    public static List<String> distinct(List<String> list) {
        final boolean sta = null != list && list.size() > 0;
        List doubleList= new ArrayList();
        if (sta) {
            Set set = new HashSet();
            set.addAll(list);
            doubleList.addAll(set);
        }
        return doubleList;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    二、利用 Set 集合特性保持顺序一直去重
    // Set去重并保持原先顺序的两种方法
    public static void delRepeat(List<String> list) {
        //方法一
        List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
        //方法二
        List<String> listNew2 = new ArrayList<String>(new LinkedHashSet<String>(list));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    三、使用 List 自身方法 remove() -> 不推荐
    /**
    * 去除重复数据(一般不推荐)
    * 类似于冒泡排序思想
    * @param list
    */
    public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) {
        if (null != list && list.size() > 0) {
            //循环list集合
            for  ( int  i  =   0 ; i  <  list.size()  -   1 ; i ++ )  {
                for  ( int  j  =  list.size()  -   1 ; j  >  i; j -- )  {
                    // 这里是对象的比较,如果去重条件不一样,在这里修改即可
                    if  (list.get(j).equals(list.get(i)))  {
                        list.remove(j);
                    }
                }
            }
        }
        //得到最新移除重复元素的list
        return list;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    四、遍历 List 集合,将元素添加到另一个 List 集合中
    // 遍历后判断赋给另一个list集合,保持原来顺序
    public static List<String> delRepeat(List<String> list) {
    	  List<String> listNew = new ArrayList<String>();
    	  for (String str : list) {
    	       if (!listNew.contains(str)) {
    	           listNew.add(str);
    	       }
    	   }
    	  return listNew ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    五、使用 Java8 特性去重
    public static List<String> delRepeat(List<String> list) {
         List<String> myList = list.stream().distinct().collect(Collectors.toList());
    	 return myList ;
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    介绍事件“捕获”和“冒泡”执行顺序和事件的执行次数
    PG 多表连接查询
    Jetpack:013-Jetpack底部导航栏
    排序算法题型
    wget、curl命令
    docker 下安装mysql8.0
    计算机毕业设计django基于python的高校奖学金管理系统(源码+系统+mysql数据库+Lw文档)
    Elasticsearch基础篇(二):Elasticsearch在windows和liunx上的安装部署
    实战项目:VB龟兔赛跑游戏+猜数字游戏
    【无标题】
  • 原文地址:https://blog.csdn.net/qq_43108153/article/details/136610996