在这段代码中 集合中有三个字段分别是year,month,total,我需要通过流去除year最大的时候month最大的total值
时间: 2024-05-11 17:17:20 浏览: 64
可以使用 Java 8 的 Stream API 来实现这个需求。首先需要构造一个包含三个字段的数据集合,例如:
```java
List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> row1 = new HashMap<>();
row1.put("year", 2020);
row1.put("month", 1);
row1.put("total", 100);
data.add(row1);
Map<String, Object> row2 = new HashMap<>();
row2.put("year", 2021);
row2.put("month", 2);
row2.put("total", 200);
data.add(row2);
Map<String, Object> row3 = new HashMap<>();
row3.put("year", 2020);
row3.put("month", 2);
row3.put("total", 150);
data.add(row3);
```
然后使用 Stream API 进行过滤和排序:
```java
Optional<Map<String, Object>> result = data.stream()
.filter(row -> row.get("year").equals(
data.stream().mapToInt(r -> (int) r.get("year")).max().orElse(0)))
.filter(row -> row.get("month").equals(
data.stream().filter(r -> r.get("year").equals(row.get("year")))
.mapToInt(r -> (int) r.get("month")).max().orElse(0)))
.max(Comparator.comparingInt(row -> (int) row.get("total")));
```
这里使用了两个 `filter` 函数分别过滤出年份最大和月份最大的数据,最后使用 `max` 函数取出 total 最大的一条数据。注意,这里使用了 `Optional` 来处理找不到最大值的情况。
阅读全文