gpt4 book ai didi

java - 队列中有更多我放入其中的项目

转载 作者:行者123 更新时间:2023-11-30 06:13:19 25 4
gpt4 key购买 nike

在我的 Java 程序中,我用 0 到 1000 之间的所有数字初始化了一个队列。

        emptyFrames = new PriorityQueue<Integer>();
for (int i = 0; i < 1000; i++) {
emptyFrames.add(i);
}
System.out.println("Debug");

但是,当我进入调试时,队列中有 1155 项。

Debug为什么会这样?

最佳答案

大于 1000 的索引与队列的容量有关,而不是与队列的大小有关。

在内部,PriorityQueue 由一组对象支持。将对象添加到具有完整后备数组的队列时,队列将通过调用 grow 适度扩展数组,使其具有内部空间(容量)可用于将来的 add 调用。这避免了每次调用 add 时队列都必须扩展其数组,这会非常低效。

private void grow(int minCapacity) {
int oldCapacity = queue.length;
// Double size if small; else grow by 50%
int newCapacity = oldCapacity + ((oldCapacity < 64) ?
(oldCapacity + 2) :
(oldCapacity >> 1));
// overflow-conscious code
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
queue = Arrays.copyOf(queue, newCapacity);
}

Docjar 检索到的代码.

关于java - 队列中有更多我放入其中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com