Map<String, List<ProjDetailVO>> collect1 = evaluationProjSum.stream(). filter(t -> t.getEvaluationLevel() != null). collect(Collectors.groupingBy(ProjDetailVO::getEvaluationLevel));报错空指针
时间: 2024-02-11 08:04:41 浏览: 56
这段代码中,可能会出现空指针异常的地方有两处:
1. `evaluationProjSum` 为空。请确保 `evaluationProjSum` 不为 null。
2. `t.getEvaluationLevel()` 返回 null。请确保 `getEvaluationLevel()` 方法不会返回 null。或者你可以使用 `Objects.requireNonNull` 方法来判断:
```
Map<String, List<ProjDetailVO>> collect1 = evaluationProjSum.stream()
.filter(t -> Objects.requireNonNull(t.getEvaluationLevel()) != null)
.collect(Collectors.groupingBy(ProjDetailVO::getEvaluationLevel));
```
你可以根据具体的场景,选择适合的方法来解决这个问题。
相关问题
將List<Map<String,String>>用stream转为Map<String,List<String>>
可以使用Java 8的Stream API来将List<Map<String,String>>转化为Map<String,List<String>>。假设我们要将List<Map<String,String>>中的key为"keyName"的元素对应的value值转化为List<String>,并将每个元素的key对应的List<String>收集到Map<String,List<String>>中,可以使用以下代码:
```
List<Map<String, String>> list = ... // 初始化List<Map>对象
Map<String, List<String>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.filter(entry -> entry.getKey().equals("keyName"))
.collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
```
这段代码会对List中的每个Map对象执行flatMap操作,将其中的entry打散为一个个单独的entry,然后筛选出key为"keyName"的entry,最后使用groupingBy和mapping方法将每个entry的key对应的value转化为List<String>,并收集到Map<String,List<String>>中。
Map<String, List<DySettlementInputExtend>> collect = inputExtends.stream().filter(i -> i.getFinancialName() == "补贴退款") .collect(Collectors.groupingBy(DySettlementInputExtend::getFinancialName));
这是一段Java代码,它使用Java 8中的Stream API对一个List进行了过滤和分组操作。具体来说,这段代码首先使用filter方法过滤出所有"补贴退款"的元素,然后使用collect方法对这些元素进行分组,分组的依据是元素的financialName属性。最终得到的是一个Map对象,其中key是"补贴退款",value是一个List,List中包含所有financialName属性为"补贴退款"的元素。
阅读全文