java - 这个 Stream 对象是创建无限的黑猩猩对象列表还是只创建一个黑猩猩对象?

标签 java java-stream

OCP学习书中有一行代码我不太理解。事情是这样的:

Stream<String> infinite = Stream.generate(() -> "chimp");

这会创建一个仅包含一个名为 chimp 的元素的无限流,还是会无限生成 chimp 字符串。谢谢。

最佳答案

Stream java.util.stream.Stream.generate(Supplier s)

Returns an infinite sequential unordered stream where each element is generated by the provided Supplier. This is suitable for generating constant streams, streams of random elements, etc.

它将创建一个无限的Stream ,这意味着 Stream具有无限数量的元素。所有元素都相同 String例如,自 "chimp"将始终返回相同的 String来自 String 的实例池。

如果你把它改成

Stream<String> infinite = Stream.generate(() -> new String("chimp"));

每个String此元素 Stream将是一个独特的实例。

关于java - 这个 Stream 对象是创建无限的黑猩猩对象列表还是只创建一个黑猩猩对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888918/

相关文章:

java - 使用 java8 stream api 时类型丢失

java - 重用函数时使用什么模式

java - Recyclerview 中的 view.GONE 仍保留空间

java-stream - 使用 Java Streams 迭代两个相同的 Set

java - 如何在 forEach 中执行操作并将其传递给 Java 流中的 groupingBy

java - 创建非常大的列表 block 时内存不足

groovy - 来自 Groovy 的 Java 8 流分组

java - 如何使用 ANT 将版本号添加到 WAR 文件

用于条码扫描器的 Java 库?

Java HashMap 到矩阵