gpt4 book ai didi

java - java中优先级队列的默认大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:17 27 4
gpt4 key购买 nike

我想知道为什么 PriorityQueue in Java 的默认大小是 11。我查了implementation这让我更加困惑。

优先级队列被实现为一个堆。使用此功能调整其容量:

/**
* Increases the capacity of the array.
*
* @param minCapacity the desired minimum capacity
*/
private void grow(int minCapacity) {
if (minCapacity < 0) // overflow
throw new OutOfMemoryError();
int oldCapacity = queue.length;
// Double size if small; else grow by 50%
int newCapacity = ((oldCapacity < 64)?
((oldCapacity + 1) * 2):
((oldCapacity / 2) * 3));
if (newCapacity < 0) // overflow
newCapacity = Integer.MAX_VALUE;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
queue = Arrays.copyOf(queue, newCapacity);
}

我不明白容量的初始值11。我认为容量应该始终是 2 到级别数。有什么解释吗?

最佳答案

11 可能是一个或多或少任意选择的数字,作为内存消耗(太大的数字会白白消耗太多内存)和 CPU 消耗(太小的数字需要太多调整大小)之间的权衡队列)。他们可能对典型用例进行了基准测试,以选择这个数字和用于调整队列大小的策略。

关于java - java中优先级队列的默认大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861101/

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