java里lambda怎么再list里根据多字段去重,取id最大
时间: 2024-12-08 20:19:46 浏览: 11
在 Java 中,可以使用 Lambda 表达式配合 Stream API 来根据多个字段对 List 中的对象进行去重,并获取每个唯一组别的最大 id。假设我们有一个名为 `MyObject` 的类,包含 `id` 和 `otherField` 两个字段,你可以这样做:
```java
import java.util.*;
import java.util.stream.*;
class MyObject {
private int id;
// 其他字段...
// getters and setters...
}
List<MyObject> myList = ... // 要处理的列表
// 使用 Stream API 进行操作
List<MyObject> distinctByMaxId = myList.stream()
.collect(Collectors.groupingBy(
myObj -> Objects.hash(myObj.getId(), myObj.getOtherField()), // 根据 id 和 otherField 计算哈希码作为分组键
Collectors.maxBy(Comparator.comparing(MyObject::getId)) // 按 id 排序并取最大
))
.values(); // 取出每个分组的最大对象
阅读全文