• 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 ;
    }
  • 相关阅读:
    poj 2728 Desert King
    uva 439 Knight Moves
    hdu 1875 畅通工程再续
    scau实验题 8600 骑士周游问题(有障碍物)
    scau实验题 8596 Longest Ordered Subsequence
    poj 1679 The Unique MST
    uva 527 Oil Deposits
    poj 2533 Longest Ordered Subsequence
    .net 程序员 java 开发入门
    Collation conflict occur at operation on User define funtion & table's column
  • 原文地址:https://www.cnblogs.com/mike-mei/p/15015458.html
Copyright © 2020-2023  润新知