【问题标题】:Do we need to check if a Stream in java 8 if it is null and not iterate我们是否需要检查 java 8 中的 Stream 是否为空且不迭代
【发布时间】:2020-01-16 22:47:19
【问题描述】:

在迭代之前检查流是否为空或不为空是否推荐/好方法

我能想到的是将 stream() 分配给 Stream vairable 并检查空和空

是否有任何 java 8 功能/特性可以检查?

参考 :- https://www.baeldung.com/java-null-safe-streams-from-collections

【问题讨论】:

标签: java java-8


【解决方案1】:

在非空对象上调用stream() 永远不应返回null。所以检查 stream 是否为null 似乎没有必要。

如果流是空的,什么都不会发生。那为什么要检查呢?

是的,JDK 中有一些方法可以帮助您检查不是null 的参数。看看java.util.Objects

【讨论】:

  • 好的。我认为迭代至少抛出是开销。那一点被清除了。第二部分?在java 8函数中检查null?它会起作用吗。而不是 cars.stream().map() 使用 Optional.ofNullable(cars).map()
  • 在实践中不会有任何影响。你会更喜欢更简单的cars.stream().map()
  • 如果集合为空并且在其中应用 sream() 将返回 NullPointerException。不是吗?
【解决方案2】:

不,没有必要¹。

只要您使用空 Streams 而不是 null(例如作为方法参数),一切正常。你不需要检查 Stream 是否为空,就像你不需要检查 Collection 是否为空一样,如果你在代码中使用空集合而不是空值(你应该)。

¹ 现在这是假设来自连续源(集合、生成器)的“原始”流。您可以使用map(o -> o.getPossiblyNull()) 之类的内容轻松创建包含空值的流。在这种情况下,您可能希望使用 .filter(Objects::nonNull) 从 Stream 中删除任何 null 元素。

【讨论】:

  • 第二部?在java 8函数中检查null?它会起作用吗。而不是 cars.stream().map() 使用 Optional.ofNullable(cars).map()
  • @PSatishPatro 滥用Optional,与流无关。
  • 好吧,我只想在它不为 null 时继续流式传输,否则通过 null 集合进行流式传输将给出 NullPointerException。所以,我正在考虑如何在 java 8 中处理它。
  • @PSatishPatro 不要使用空集合或流。使用空集合和流。那你就不用担心空值了。
  • 如果我们在空流列表上调用 distinct() 会怎样
猜你喜欢
  • 1970-01-01
  • 2011-02-21
  • 2019-01-25
  • 2023-03-28
  • 1970-01-01
  • 2013-03-27
  • 2014-12-10
  • 2011-04-05
  • 2018-09-17
相关资源
最近更新 更多