Collectors.mapping(e -> deviceMap.get(e.getDeviceId()), Collectors.toList()) 出现了All elements are null
时间: 2024-04-05 19:31:37 浏览: 48
这个问题可能是因为 `deviceMap` 中不存在 `deviceRelatedList` 中某些元素的设备 ID,导致了 `deviceMap.get(e.getDeviceId())` 返回了 null,从而导致了 `mapping` 操作中的所有元素都是 null。
你可以在调用 `mapping` 之前先过滤掉 `deviceRelatedList` 中在 `deviceMap` 中不存在的设备 ID 对应的元素,或者在 `mapping` 操作中加入 null 值判断,避免出现空指针异常。
相关问题
Collectors.mapping(e -> deviceMap.get(e.getDeviceId()), Collectors.toList()) 出把deviceMap中获取到的null加入到list集合中,出现All elements are null
`Collectors.mapping(e -> deviceMap.get(e.getDeviceId()), Collectors.toList())` 的作用是将一个元素为 `e` 的流中每个元素的 `deviceId` 属性作为 key,从 `deviceMap` 中获取对应的 value,然后将这些 value 放入一个 List 中。如果 `deviceMap.get(e.getDeviceId())` 返回了 null,那么这个 null 也会被加入到 List 中。如果整个流中的元素在 `deviceMap` 中均没有对应的 value,那么就会得到一个 List,其中所有元素都是 null。
如果你希望在 List 中去掉所有的 null 元素,可以在 `Collectors.toList()` 后再调用 `stream().filter(Objects::nonNull).collect(Collectors.toList())` 进行过滤。
Collectors.mapping(e -> deviceMap.get(e.getDeviceId()), Collectors.toList())会把null也加入到List集合中
是的,`Collectors.mapping(e -> deviceMap.get(e.getDeviceId()), Collectors.toList())`会将`deviceMap.get(e.getDeviceId())`返回的null值也加入到List集合中。如果你希望在收集到List集合之前过滤掉null值,可以使用`Stream.filter()`方法进行过滤,例如:`filter(Objects::nonNull)`。这样可以确保List中不包含null值。
阅读全文