0

引用:Default initial capacity of ArrayDeque is 16. It will increase at a power of 2 (24, 25, 26 and so on) when size exceeds capacity.

这是否意味着它的行为类似于ArrayList?每次大小超过容量时,都会将旧元素复制到新数组中?我可以说ArrayDequeueand ArrayListis array的内部实现(正如他们的名字所说)吗?只是调整大小不同?

4

1 回答 1

1

Yes的ArrayDeque行为类似于ArrayList:在内部它使用一个 Object 数组。如果容量不够,它会创建一个更大的新数组,并将旧数组中的项目复制到新数组中。

Java API 规范不需要任何特定的大小调整行为。实际上,OpenJDK 中的当前实现如果数组很小(64),则将数组的大小加倍,否则增长 50%

    // Double capacity if small; else grow by 50%
    int jump = (oldCapacity < 64) ? (oldCapacity + 2) : (oldCapacity >> 1);

似乎“加倍”行为是近似的:由于第一次调整大小后的“+2”,容量为 16+16+2 = 34。第二次调整大小后,它是 34+34+2 = 70。之后数组每次调整大小都会增加 50%。

于 2020-08-26T14:18:24.337 回答