java stream 对象中有type,version等字段,根据type字段分组,取version最大值,期望返回一个Map<String,Integer>
时间: 2024-12-15 19:13:45 浏览: 4
在Java Stream API中,你可以利用`Collectors.groupingBy()`方法结合`max()`函数来实现这个需求。假设有一个名为`StreamObject`的类,它有`type`和`version`两个字段,你想根据`type`将对象分组,并获取每个组内`version`的最大值,可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
class StreamObject {
String type;
int version;
// 构造函数和getter/setter...
}
List<StreamObject> objects = ...; // 假设这是你的对象列表
Map<String, Integer> maxVersionPerType = objects.stream()
.collect(Collectors.groupingBy(StreamObject::getType, // 按照type字段分组
Collectors.maxBy(Comparator.comparingInt(StreamObject::getVersion)))); // 获取每个组内的最大版本
// 现在maxVersionPerType是一个Map,键是type,值是对应类型的最大version
```
在这个例子中,`Collectors.maxBy()`用于找到每个组的`version`的最大值,而`groupingBy()`则按照`type`字段将对象分成不同的组。
阅读全文