如何在Java中创建一个空Stream?


73

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


3
StackOverflow比文档更适用于Google。
sdgfsdh

2
您根本不需要Google。开始开发Java软件时,只有一个地址可以添加书签,即docs.oracle.com/javase/8/docs/api,这是正式的API文档,其中包含结构中不需要结构搜索引擎的每个包,类和成员。找到他们。
Holger

8
当您已经知道它存在时,则可以。但是Java充满了您可能希望存在的库方法,但结果并不存在(或者不在您想到的地方,或者您以为您想到的名字),并且如果您始终制作Java方法,那么您可能会花很多时间寻找它们API文档是您的第一个调用端口。
安德鲁·斯宾塞

Answers:


133

就这么简单: Stream.empty()


8
对于特定类型的流,请使用Stream.<T>empty(),即Stream.<String>empty()
Mugen

@Mugen不,你不应该。为什么你这么想?
尤金(Eugene)

因为如果不这样做,编译器会假定类型为Stream<? extends Object>,为什么不呢?
Mugen

@Mugen您需要提供示例或提出问题,这不是类型推断的工作方式。
尤金(Eugene)

我提供了一个提示,如果您认为我错了,我将其删除,因为这是您的答案,我不打算开始新的讨论。
Mugen

9
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());打印零。
  • 从集合中创建的具有零元素的任何流(如aListSet)都可以返回空流;例如:new ArrayList<Integer>().stream()返回类型为空的流Integer

这比接受的答案短;它使您想知道为什么Stream.empty()创建了它。
sdgfsdh

7
与相对Stream.empty(),它在内部创建一个空数组,对其执行null检查等。您可以在实现中查找它。
Marcin Majkowski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.