zoukankan      html  css  js  c++  java
  • Java中List集合去除重复数据的六种方法

    1. 循环list中的所有元素然后删除重复

    public   static   List  removeDuplicate(List 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);       
                }        
            }        
          }        
        return list;       
    }

    2. 通过HashSet踢除重复元素

    public static List removeDuplicate(List list) {   
        HashSet h = new HashSet(list);   
        list.clear();   
        list.addAll(h);   
        return list;   
    } 

    3. 删除ArrayList中重复元素,保持顺序

    // 删除ArrayList中重复元素,保持顺序     
     public static void removeDuplicateWithOrder(List list) {    
        Set set = new HashSet();    
         List newList = new ArrayList();    
       for (Iterator iter = list.iterator(); iter.hasNext();) {    
             Object element = iter.next();    
             if (set.add(element))    
                newList.add(element);    
          }     
         list.clear();    
         list.addAll(newList);    
        System.out.println( " remove duplicate " + list);    
     }

    4.把list里的对象遍历一遍,用list.contains(),如果不存在就放入到另外一个list集合中

    public static List removeDuplicate(List list){  
            List listTemp = new ArrayList();  
            for(int i=0;i<list.size();i++){  
                if(!listTemp.contains(list.get(i))){  
                    listTemp.add(list.get(i));  
                }  
            }  
            return listTemp;  
        }

    5、retainAll和retainAll用法

    List<String> a = Arrays.asList ("a", "f", "e", "x", "w");
    List<String> b = Arrays.asList ("a", "b", "c", "d");
    List<String> c = null;
    List<String> d = null;
    c  = new ArrayList(a);
    c.retainAll(b); // 得到  a, b 的交集。
    d = new ArrayList(a);
    d.addAll(b); // 合并 a, b 值到 d 中。
    d.removeAll(c);// 去掉交集 c 中的所有条目。留下只出现在a 或 b 中的条目。
    System.out.println(d);

    6、用JDK1.8 Stream中对List进行去重:list.stream().distinct();

    List<String> a = new ArrayList<> ();
            a.add("a");
            a.add("b");
            a.add("b");
            List<String> b = new ArrayList<> ();
            b.add("a");
            b.add("c");
            b.add("b");
            a.addAll(b);
            List list=(List) a.stream().distinct().collect(Collectors.toList());
            System.out.println(list);
  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/zhaoyan001/p/11737961.html
Copyright © 2011-2022 走看看