List<Map<String,Object>>一旦map中一个字段为指定值则停止流否则继续求 另一个字段的和,使用stream
时间: 2023-11-11 22:27:12 浏览: 30
怎么在java 8的map中使用stream
可以使用 `Stream.anyMatch` 方法判断列表中是否存在指定字段为指定值的 map,如果存在则直接返回 0,否则继续使用流求和。具体实现代码如下:
```java
List<Map<String, Object>> list = ... // 列表数据
int sum = list.stream()
.peek(map -> {
if ("指定值".equals(map.get("fieldName"))) {
throw new RuntimeException("存在指定字段为指定值的 map");
}
})
.filter(map -> map.get("otherField") != null)
.mapToInt(map -> Integer.parseInt(map.get("otherField").toString()))
.sum();
return sum;
```
上述代码中,使用 `peek` 方法在流中的每一个 map 中进行判断,如果指定字段为指定值,则抛出异常,停止流的处理。在下一个操作中使用 `filter` 方法过滤另一个字段为空的 map,然后使用 `mapToInt` 方法将另一个字段转换为一个 IntStream,最后使用 `sum` 方法求和。
阅读全文