java8集合中的对象根据属性去重
时间: 2023-08-10 13:06:11 浏览: 120
Java中List集合对象去重及按属性去重的8种方法
5星 · 资源好评率100%
在Java8中,可以使用Stream API来对集合中的对象根据属性进行去重。可以使用 `Collectors.toMap` 方法将对象的属性作为键,对象本身作为值,然后使用 `Function.identity()` 方法获取对象本身。如果存在重复的键,则使用 `BinaryOperator` 自定义合并逻辑,例如选择保留第一个或最后一个对象。例如,假设有一个 `Person` 类,其中包含 `id` 和 `name` 两个属性,现在需要根据 `id` 属性进行去重,代码如下:
```java
List<Person> persons = Arrays.asList(new Person(1, "Tom"),
new Person(2, "Jerry"),
new Person(3, "Mike"),
new Person(2, "Lucy"),
new Person(4, "John"),
new Person(1, "Bob"));
List<Person> result = new ArrayList<>(persons.stream()
.collect(Collectors.toMap(Person::getId, Function.identity(), (person1, person2) -> person1))
.values());
result.forEach(person -> System.out.println(person.getId() + " : " + person.getName()));
```
运行结果如下:
```
1 : Tom
2 : Jerry
3 : Mike
4 : John
```
其中,首先使用 `Collectors.toMap` 方法将对象的 `id` 属性作为键,对象本身作为值,然后使用 `(person1, person2) -> person1` 自定义合并逻辑,选择保留第一个对象。最后使用 `values()` 方法获取去重后的对象集合,并输出结果。
阅读全文