去重的六种方式

先了解下什么是有序/无序

无序:数据的排列顺序与我们预期的不一致

有序:数据的排列顺序符合我们的预期

什么是有序/无序集合

有序集合:插入和读取数据的顺序一致

无需集合:插入和读取数据的顺序不一致

去重

1.利用集合中的contains去重(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//contains去重
List<Integer> newList=new ArrayList<Integer>;
list.forEach(i->{
    if(!newList.contains(i)){//i代表list中的元素
        newList.add(i)//如果newList中不存在元素i,呢么就添加
  }			
}
System.out.println(newList)

2.迭代器去重(无序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//迭代器去重
Iterator<Integer> iterator = list.iterator();//创建迭代器对象
while(iterator.hashNext()){//查询是否有下一个元素
    integer item=iterator.next();//如果有则获取该元素
    if(list.indexOf(item)!=list.lastIndexOf(item)){
        iterator.remove();//迭代器中的删除是删除最后返回的元素
  }
}

3.hashSet去重(无序,但是会对结果集进行排序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//hashSet去重
Set<Integer> s=new HashSet<Integer>(list);//创建带参数的hashSet对象
System.out.println(s);

4.TreeSet(无序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//treeSet去重
Set s=new TreeSet(list);
System.out.println(s);

5.linkedHashSet(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//LinkedHashSet去重
Set<Integer> s=new LinkedHashSet<Integer>(list);
System.out.println(s);

6.Stream去重(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//Stream去重
List<Integer>stream=list.stream().distinct().collect(Collectors.toList());
System.out.println(stream)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值