【发布时间】:2016-09-18 17:54:39
【问题描述】:
我想使用ArrayList 来表示优先级队列。所以我想在ArrayList 的特定位置添加项目。但是当我运行它时,系统告诉我Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 0.
public class PriorityQueue
{
public ArrayList<String> Queue=new ArrayList<>();
public void enqueu(String s, int p)
{
Queue.add(p,s);
}
public void dequeu()
{
String temp=Queue.get(Queue.size()-1);
Queue.remove(temp);
}
public void print()
{
String[] print=new String[Queue.size()];
print=Queue.toArray(print);
for(int i=0;i<Queue.size();i++)
{
System.out.println(print[i]);
}
}
public static void main(String[] args)
{
PriorityQueue test= new PriorityQueue();
test.enqueu("x",10);
test.enqueu("Y",1);
test.enqueu("Z",3);
test.print();
}}
【问题讨论】:
-
你的
enqueue如果这应该是一个队列就没有任何意义,因为enqueue在Queue的末尾添加而不是在任意索引处。由于您称您为类 Priority Queue,我假设您的enqueue方法的第二个参数将是元素的优先级而不是它的索引。您可能应该阅读有关队列的一些内容。