JAVA 中的Iist 去重方法

22 篇文章 1 订阅
6 篇文章 0 订阅

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踢除重复元素

  利用  hashSet 特点

  • 它是无序的,即添加的顺序和遍历出来的顺序是不同的
  • 它里面不允许有重复元素,是因为它是基于HashMap实现的
  • 实现了Set接口,由哈希表(实际上是一个HashMap实例)支持
  • 底层数据结构是哈希表


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);

---------

还有知道其他方法的欢迎底下留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jonly_W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值