【问题标题】:Resizing of ArrayDeque调整 ArrayDeque 的大小
【发布时间】:2020-08-26 13:36:19
【问题描述】:

引用: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?每次大小超过容量时,都会将旧元素复制到新的 array 中?我可以说ArrayDequeueArrayList 的内部实现是 array (正如他们的名字所说)?只是调整大小不同?

【问题讨论】:

    标签: java arrays arraylist arraydeque


    【解决方案1】:

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

    Java API 规范不需要任何特定的大小调整行为。其实目前OpenJDK中的实现doubles the size of the array if it's small (64), otherwise it grows by 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%。

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2010-12-11
      • 2016-06-18
      相关资源
      最近更新 更多