zoukankan      html  css  js  c++  java
  • List数据去重的五种有效方法

    方案一:借助Set的特性进行去重

         /**
         * 去除重复数据
         * 由于Set的无序性,不会保持原来顺序
         * @param list
         */
        public static List<String> list 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;
        }

    方案二 : 利用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));
       }

    方案三 : 使用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;
        }

    方案四 : 遍历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 ;
    }

    方案5 : 使用Java8特性去重

    public static List<String> delRepeat(List<String> list) {
         List<String> myList = list.stream().distinct().collect(Collectors.toList());
         return myList ;
    }
  • 相关阅读:
    10个很有用的高级Git命令
    25套用于Web UI设计的免费PSD网页元素模板
    101个MySQL 的调节和优化的提示
    10款最新且超实用的开发框架
    30 个有用的 HTML5 和 CSS3 表单设计
    cetos7最小化安装设置网络启动和更新yum源
    百度地图api开发:根据坐标获得地理描述地址
    防止sql注入的函数addslashes()
    jquery使用ajax提交form表单
    Git常用命令
  • 原文地址:https://www.cnblogs.com/mike-mei/p/15015458.html
Copyright © 2011-2022 走看看