我正在编写自己的PriorityQueue类,并且具有:

private Queue<E>[] queues;


public PriorityQueue(int maxSize) {
  queues = new Queue[maxSize+1];
  size = maxSize;
}

这可以编译,但是当我在priorityQueue上调用.add时,出现此错误:
java.lang.NullPointerException
    at PriorityQueue.add(PriorityQueue.java:13)

这里添加:
public void add(E item, int priority) {
  queues[priority].offer(item);
}

最佳答案

您需要初始化队列:

public PriorityQueue(int maxSize) {
  queues = new Queue[maxSize+1];
  size = maxSize;
  for(int i = 0; i <= maxSize; i++)
    queues[i] = new LinkedList<E>();
}

您可以选择所需的任何Queue实现,我刚刚选择了LinkedList,因为它首先出现在我的脑海中...

10-05 21:42