java中的SpinedBuffer是什么?它是如何工作的?
在Java Stream API实现中,他们使用一种数据结构,称之为java中的SpinedBuffer是什么?它是如何工作的?,java,java-8,java-stream,Java,Java 8,Java Stream,在Java Stream API实现中,他们使用一种数据结构,称之为SpinedBuffer,在Java文档中,他们将其描述如下: 一个或多个数组用于存储元素。与{@link ArrayList}使用的单个数组相比,使用多个数组具有更好的性能特性,如列表的容量需要时 要增加,不需要复制元素。这是 通常在遍历结果的情况下是有益的 几次 我想知道: 此数据结构如何使用多个阵列来提高性能 在这个数据结构的实现中还有另一个称为chunk的概念,什么是chunk,他们如何使用它来实现这个数据结构 Ar
SpinedBuffer
,在Java文档中,他们将其描述如下:
一个或多个数组用于存储元素。与{@link ArrayList}使用的单个数组相比,使用多个数组具有更好的性能特性,如列表的容量需要时
要增加,不需要复制元素。这是
通常在遍历结果的情况下是有益的
几次
我想知道:
ArrayList
分配单个数组。如果继续向其中添加元素,则在某个点上数组太小。您需要重新分配阵列,并将其中的所有内容复制到新阵列。这个SpinedBuffer
有一个块列表。当您不断向其添加元素,并且所有的块都已满时,它只会分配一个新块(其中包含一个数组),以便添加更多元素。发生这种情况时,不需要复制现有的块。您可以查看源代码。Java是开源的。ArrayList
分配单个数组。如果继续向其中添加元素,则在某个点上数组太小。您需要重新分配阵列,并将其中的所有内容复制到新阵列。这个SpinedBuffer
有一个块列表。当您不断向其添加元素,并且所有的块都已满时,它只会分配一个新块(其中包含一个数组),以便添加更多元素。发生这种情况时,不需要复制现有的块。您可以查看源代码。Java是开源的。