【发布时间】:2010-04-07 01:08:23
【问题描述】:
我正在创建一个包含多个队列的 PriorityQueue。我正在使用一个 Array 来存储构成我的不同 PriorityQueues 的多个 ArrayLists。到目前为止,这是我的构造函数:
ArrayList<ProcessRecord> pq;
ArrayList[] arrayQ;
MultiList(){
arrayQ = new ArrayList[9];
pq = new ArrayList<ProcessRecord>();
}
当我试图获取整个数组的大小时,问题就出现了,即数组中每个ArrayList 的大小之和。
public int getSize() {
int size = 0;
for (int i = 1; i <= 9; i++) {
size = size + this.arrayQ[i].size();
}
return size;
}
似乎不起作用。我是否正确声明了ArrayList 的数组?我不断收到一条错误消息,说 this.arrayQ[i].size() 不是一种方法。 ( .size() 是问题)
感谢您的帮助!
大卫
【问题讨论】:
-
虽然我不认为这是您的问题的原因,但 for 循环将完全跳过数组中的第一个元素,并在结束时抛出 ArrayIndexOutOfBoundsException。 Java 数组是零索引的,因此 9 元素数组的有效索引是 0 到 8。
-
为什么不使用一个数组或一个堆来实现 PriorityQueue?
-
我在过去的分配中都使用过,这个应该是多个 PriorityQueues 并以每个队列的最大优先级循环方式输出它们。