Java 中 Stream.Builder 的用途是什么

xen*_*oid 3 java java-stream

换句话说,通过使用Stream.Builder.add()将项目添加到构建器然后使用Stream.Builder.build(),与将项目添加到集合或数组中并从中创建 Stream 相比,我可以获得什么好处?

我认为在某些情况下会有好处,但对我来说并不明显......

Fed*_*ner 7

假设机器有足够的内存,使用允许向其Stream.Builder添加多个元素。Integer.MAX_VALUE

在内部,Stream.Builder使用 a SpinedBuffer,它是一个非公共类。

来自SpinedBuffer文档:

元素的有序集合。可以添加元素,但不能删除元素。经历构建阶段(在此期间可以添加元素)和遍历阶段(在此期间可以按顺序遍历元素,但不能进行进一步的修改)。

一个或多个数组用于存储元素。使用多个数组比使用单个数组具有更好的性能特征 ArrayList,因为当需要增加列表的容量时不需要复制元素。这在结果被遍历次数较少的情况下通常是有益的。

因此,它也避免了ArrayList调整大小。