我想知道为什么Java中的PriorityQueue默认大小是
优先队列是作为堆实现的。它的容量通过以下函数进行调整:
11
。我查阅了实现方式,但这让我更加困惑。优先队列是作为堆实现的。它的容量通过以下函数进行调整:
/**
* 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
倍。有什么澄清吗?