如何解决调整ArrayDeque的大小
报价: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
?每当大小超过容量时,就会有一个新的数组复制到旧的元素?我可以说ArrayDequeue
和ArrayList
的内部实现是 array (正如其名称所说)吗?只是大小不同?
解决方法
是的ArrayDeque
的行为与ArrayList
类似:内部使用Object数组。如果容量不足,它将创建一个更大的新阵列,并将项目从旧阵列复制到新阵列。
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%。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。