• Java中List集合去除重复数据的六种方法


    原文链接:https://www.cnblogs.com/zhaoyan001/p/11737961.html

    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);
    复制代码
  • 相关阅读:
    P站画师 GTZ taejune 精选4k插画壁纸
    点、向量与坐标系
    一些几何
    画直线算法 Line drawing algorithm
    DX11 学习大纲
    插值 Interpolation
    The History of Computer Graphics
    vue中的请求拦截响应
    Event loop
    小程序使用wx.navigateTo()跳转失败
  • 原文地址:https://www.cnblogs.com/lwh-12345/p/13364137.html
Copyright © 2020-2023  润新知