Java中采用stream新特性进行去重

Java中采用stream新特性进行去重

平时开发过程中去重的方式有很多,如下
1、可以采用for进行正序去重,但是每次去重之后需要将指针减一
2、可以采用for进行倒序去重,这种方式不需要指针减一
3、采用迭代器foreach进行去重(推荐)
4、采用jdk8新特性stream进行去重
今天着重讲解一下如何用stream进行去重,如下是准备测试的数据
在这里插入图片描述

一、直接去重

用distinct直接去重,但是只能去掉构建对象相同
在这里插入图片描述
预期结果
在这里插入图片描述
可以明显看到user1和user2进行了去重

二、自定义去重

如何采用stream进行自定义去重呢?
我们以age字段为例,进行去重
在这里插入图片描述
在这里插入图片描述
预期结果
在这里插入图片描述
以上就是进行去重的小案例,希望帮助到大家!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java,可以使用Stream来对集合进行操作。有几种常见的方式可以实现去: 1. 使用distinct()方法:distinct()方法会返回一个去后的Stream,它会根据对象的equals()方法来判断是否复。例如: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 5, 5); List<Integer> distinctNumbers = numbers.stream() .distinct() .collect(Collectors.toList()); System.out.println(distinctNumbers); // 输出:[1, 2, 3, 4, 5] ``` 2. 使用HashSet:利用HashSet的特性来去,HashSet会自动去除复的元素。例如: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 5, 5); List<Integer> distinctNumbers = new ArrayList<>(new HashSet<>(numbers)); System.out.println(distinctNumbers); // 输出:[1, 2, 3, 4, 5] ``` 3. 自定义比较器:如果需要根据对象的某个属性进行,可以使用自定义的比较器。例如: ```java class Person { private String name; private int age; // 省略构造方法和getter/setter @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Person person = (Person) obj; return age == person.age; } @Override public int hashCode() { return Objects.hash(age); } } List<Person> people = Arrays.asList( new Person("Alice", 20), new Person("Bob", 30), new Person("Alice", 20) ); List<Person> distinctPeople = people.stream() .distinct() .collect(Collectors.toList()); System.out.println(distinctPeople); // 输出:[Person{name='Alice', age=20}, Person{name='Bob', age=30}] ``` 这些方法都可以实现Stream的去操作,根据具体的需求选择合适的方式即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值