Мне интересно, почему размер по умолчанию 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