【问题标题】:How do I create an empty Stream in Java?如何在 Java 中创建一个空流?
【发布时间】:2017-07-04 07:24:41
【问题描述】:

在 C# 中我会使用 Enumerable.Empty(),但如何在 Java 中创建一个空的 Stream

【问题讨论】:

  • StackOverflow 比文档更适合 google。
  • 你根本不需要谷歌。在开始开发 Java 软件时,只有一个地址可以收藏一次,docs.oracle.com/javase/8/docs/api 这是官方 API 文档,其中包含每个包、类和成员的结构,不需要搜索引擎找到它们。
  • 当您已经知道它存在时,那么是的。但是 Java 有很多你可能希望存在的库方法,但结果却没有(或者不是你想的地方,或者你想的名字),如果你总是做API doc 您的第一个停靠点。

标签: java java-stream enumerable


【解决方案1】:

就这么简单:Stream.empty()

【讨论】:

  • 对于特定类型的流,使用Stream.<T>empty(),即Stream.<String>empty()
  • @Mugen 不,你不应该。你为什么这么认为?
  • 因为如果你不这样做,编译器会假定类型是Stream<? extends Object>,为什么不呢?
  • @Mugen 你需要提供一个例子或提出一个问题,这不是类型推断应该如何工作的。
  • 我提供了一个提示,如果您认为我错了,我会删除它,因为这是您的答案,我不打算开始新的讨论。
【解决方案2】:
Stream<String> emptyStr = Stream.of();

emptyStr.count() 返回 0(零)。


另外:

  • 对于像IntStream 这样的原始流,IntStream.of() 适用于 类似的方式(也是empty 方法)。 IntStream.of(new int[]{}) 也返回一个空流。
  • Arrays 类具有流创建方法,这些方法接受 基元数组或对象类型。这可以用来创建 空流;例如:System.out.println(Arrays.stream(new int[]{}).count()); 打印零。
  • 从集合创建的任何流(如ListSet) 零个元素可以返回一个空流;例如:new ArrayList&lt;Integer&gt;().stream() 返回一个 Integer 类型的空流。

【讨论】:

  • 这比接受的答案短;这让您想知道为什么创建Stream.empty()
  • Stream.empty()相反,它在内部创建空数组,对其进行空检查等。您可以在实现中查找。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2022-11-21
  • 1970-01-01
  • 2013-03-23
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多