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

har*_*814 3 java java-8 java-stream lightweight-stream-api

有一些Java代码:

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

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

And*_*lko 6

.filter(Objects::nonNull)
Run Code Online (Sandbox Code Playgroud)

在收集之前。或者用 if 将它重写为一个简单的 foreach。

顺便说一句,你可以

.map(callsBufferMap::get)
Run Code Online (Sandbox Code Playgroud)

  • 或者使用 Java 9+:`List&lt;Call&gt; UpdatedList = movingUniquedList .stream() .flatMap(s -&gt; Stream.ofNullable(callsBufferMap.get(s))) .collect(Collectors.toList());` (2认同)