私のデータ構造クラスでは、洗車をシミュレートするプログラムを作成しようとしています。優先キューを使用して、高級車に通常の車よりも高い優先度を与えたいと考えています。私が抱えている問題は、Javaが「Object」を「ArrayQueue」(単純なFIFO実装)として型キャストできないことに関係しています。何が間違っているので、どうすれば修正できますか?
public class PriorityQueue<E>
{
private ArrayQueue<E>[] queues;
private int highest=0;
private int manyItems=0;
public PriorityQueue(int h)
{
highest=h;
queues = (ArrayQueue<E>[]) new Object[highest+1]; <----problem is here
}
public void add(E item, int priority)
{
queues[priority].add(item);
manyItems++;
}
public boolean isEmpty( )
{
return (manyItems == 0);
}
public E remove()
{
E answer=null;
int counter=0;
do
{
if(!queues[highest-counter].isEmpty())
{
answer = queues[highest-counter].remove();
counter=highest+1;
}
else
counter++;
}while(highest-counter>=0);
return answer;
}
}
編集
この質問への迅速な回答をありがとうございました。私はあなたのアドバイスともう1つのコードに従うことで問題を解決しました:
public PriorityQueue(int h)
{
highest=h;
queues = new ArrayQueue[highest+1];
for(int i = 0; i <= highest; i++)
{
queues[i] = new ArrayQueue();
}
}