换句话说,通过使用Stream.Builder.add()将项目添加到构建器然后使用Stream.Builder.build(),与将项目添加到集合或数组中并从中创建 Stream 相比,我可以获得什么好处?
我认为在某些情况下会有好处,但对我来说并不明显......
假设机器有足够的内存,使用允许向其Stream.Builder添加多个元素。Integer.MAX_VALUE
在内部,Stream.Builder使用 a SpinedBuffer,它是一个非公共类。
来自SpinedBuffer文档:
元素的有序集合。可以添加元素,但不能删除元素。经历构建阶段(在此期间可以添加元素)和遍历阶段(在此期间可以按顺序遍历元素,但不能进行进一步的修改)。
一个或多个数组用于存储元素。使用多个数组比使用单个数组具有更好的性能特征
ArrayList,因为当需要增加列表的容量时不需要复制元素。这在结果被遍历次数较少的情况下通常是有益的。
因此,它也避免了ArrayList调整大小。
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |