大于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);
}
Run Code Online (Sandbox Code Playgroud)
从Docjar检索的代码.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |