• 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
  • 相关阅读:
    C语言实现扫雷游戏(分解代码,超级详细,无压力)
    软件设计师---程序设计语言考点总结
    参数传递及重定向
    【B站UP DR_CAN学习笔记】Kalman滤波1
    开源闭源杂谈
    前端面试题之【HTTP/HTML/浏览器】
    Java最基础模糊知识点快过
    win10系统下WPS工具显示灰色全部用不了,提示登录
    TS中interface接口的使用
    2022年金属非金属矿井通风上岗证题库及模拟考试
  • 原文地址:https://blog.csdn.net/qq_43108153/article/details/136610996