4

有一些Java代码:

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

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

4

4 回答 4

7
.filter(Objects::nonNull)

在收集之前。或者将其重写为带有 if 的简单 foreach。

顺便说一句,你可以做

.map(callsBufferMap::get)
于 2020-09-21T11:15:12.303 回答
4

您可以使用.filter(o -> o != null)aftermap和 before collect

于 2020-09-21T11:14:28.367 回答
3

您可以使用几个选项:

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

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

 List<Call> updatedList = updatingUniquedList
     .stream()
     .map(callsBufferMap::get)
     .filter(Objects::nonNull)
     .collect(Collectors.toList());
于 2020-09-21T11:20:45.607 回答
1

也许你可以做这样的事情:

Collectors.filtering(Objects::nonNull, Collectors.toList())
于 2020-09-21T11:30:07.323 回答