Java 流:如何避免在 Collectors.toList() 中添加空值?

Java Stream: How to avoid add null value in Collectors.toList()?

有一些Java代码:

 List<Call> updatedList = updatingUniquedList 
      .stream()
      .map(s -> {
       Call call = callsBufferMap.get(s);
      }
        return call;
     }).collect(Collectors.toList());

如果调用变量为空,如何避免避免添加到最终列表?

您可以在 map 之后和 collect 之前使用 .filter(o -> o != null)

.filter(Objects::nonNull)

收集之前。或者用 if.

将其重写为简单的 foreach

顺便说一句,你可以做到

.map(callsBufferMap::get)

您可以使用几个选项:

  1. 在流中使用非空方法:.filter(Objects::nonNull)
  2. 使用列表的 removeIf:updatedList.removeIf(Objects::isNull);

例如,这些行可能如下所示:

 List<Call> updatedList = updatingUniquedList
     .stream()
     .map(callsBufferMap::get)
     .filter(Objects::nonNull)
     .collect(Collectors.toList());

也许你可以这样做:

Collectors.filtering(Objects::nonNull, Collectors.toList())