3
我想知道爲什麼PriorityQueue in Java的默認大小是11
。我擡頭看看implementation,這讓我感到更加困惑。java中優先級隊列的默認大小
優先級隊列實現爲堆。其容量使用此功能進行調整:
/**
* 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可能是優先級隊列比順序數據結構有優勢的最小大小。 – EJP