如何在 Java 中创建一个空流?
Posted
技术标签:
【中文标题】如何在 Java 中创建一个空流?【英文标题】:How do I create an empty Stream in Java? 【发布时间】:2017-07-04 07:24:41 【问题描述】:在 C# 中我会使用 Enumerable.Empty()
,但如何在 Java 中创建一个空的 Stream
?
【问题讨论】:
*** 比文档更适合 google。 你根本不需要谷歌。在开始开发 Java 软件时,只有一个地址可以收藏一次,docs.oracle.com/javase/8/docs/api 这是官方 API 文档,其中包含每个包、类和成员的结构,不需要搜索引擎找到它们。 当您已经知道它存在时,那么是的。但是 Java 有很多你可能希望存在的库方法,但结果却没有(或者不是你想的地方,或者你想的名字),如果你总是做API doc 您的第一个停靠点。 【参考方案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());
打印零。
从集合创建的任何流(如List
或Set
)
零个元素可以返回一个空流;例如:new ArrayList<Integer>().stream()
返回一个 Integer
类型的空流。
【讨论】:
这比接受的答案短;这让您想知道为什么创建Stream.empty()
。
与Stream.empty()
相反,它在内部创建空数组,对其进行空检查等。您可以在实现中查找。以上是关于如何在 Java 中创建一个空流?的主要内容,如果未能解决你的问题,请参考以下文章