Map<String, String> map = new HashMap<>(); map.put("a", "A"); map.put("b", "B"); List<AA> list = Arrays.asList( new AA("1", "a"), new AA("b", "b"), new AA("1", "c"), new AA("1", "d")); Map<String, List<String>> typeMap = list.stream().collect(Collectors.groupingBy(AA::getName, Collectors.mapping(o -> map.get(o.getNum()), Collectors.toList()))); typeMap.forEach((k, v) -> System.out.println(k + ":::" + v)); 会出现null在List集合中
时间: 2024-03-20 20:38:39 浏览: 94
在这段代码中,如果 `map` 中不存在某个 `AA` 对象的 `num` 对应的值,那么 `Collectors.mapping(o -> map.get(o.getNum()), Collectors.toList())` 返回的结果是 `null`,因此在 `typeMap` 中会出现 `null` 值。
为了避免出现 `null` 值,可以在 `mapping` 中使用 `Optional` 类型来处理可能返回 `null` 的情况。例如:
```
Collectors.mapping(o -> Optional.ofNullable(map.get(o.getNum())).orElse(""), Collectors.toList())
```
这样,如果 `map.get(o.getNum())` 返回 `null`,则将默认值 `""` 作为结果。
阅读全文
相关推荐



