List<Map<String,Object>>一旦map中一个字段为是则返回0 否则返回 另一个字段的和,使用stream
时间: 2023-11-18 21:25:29 浏览: 38
好的,使用 stream 实现可以按照以下步骤:
1. 使用 `anyMatch` 方法判断列表中是否存在标识字段为是的 map。
2. 如果存在,返回 0;否则,使用 `mapToInt` 方法将积分字段转换为一个 IntStream。
3. 使用 `filter` 方法过滤积分字段为空的 map。
4. 使用 `mapToInt` 方法将积分字段转换为一个 IntStream。
5. 使用 `sum` 方法求和。
具体实现代码如下:
```java
List<Map<String, Object>> list = ... // 列表数据
int sum = list.stream()
.anyMatch(map -> "是".equals(map.get("flag")))
? 0
: list.stream()
.filter(map -> map.get("score") != null)
.mapToInt(map -> Integer.parseInt(map.get("score").toString()))
.sum();
return sum;
```
上述代码中,首先使用 `anyMatch` 方法判断列表中是否存在标识字段为是的 map。如果存在,则直接返回 0;否则,使用 `mapToInt` 方法将积分字段转换为一个 IntStream,然后使用 `filter` 方法过滤积分字段为空的 map,再使用 `mapToInt` 方法将积分字段转换为一个 IntStream,最后使用 `sum` 方法求和。