このプログラムでは、Javaでarraylistsを使用してヒープ優先順位キューを作成しています。 問題を簡単に解決するためにコードを裸にしておきます。シンボルを見つけることができません/ジェネリックでArrayListを使用してオブジェクトを比較可能に変換できません
本質的に、私はheapAPIのインタフェースを定義し、それをHeapクラスに実装しました。ヒープコンストラクタは、オブジェクトのarraylistを定義することによってヒープオブジェクトを構築することになっています。ここでは、PCBクラスのオブジェクト(優先キューに入るジョブ)を渡したいと思います。しかし、私はこれらのオブジェクトを渡すと、私はarraylistを通じてそれらにアクセスすることはできません。
以下に、HeapAPI、Heapクラス、およびPCBクラスのコードを示します。
HeapAPI.java
public interface HeapAPI<E extends Comparable<E>>
{
boolean isEmpty();
void insert(E item);
E remove() throws HeapException;
E peek() throws HeapException;
int size();
}
Heap.java
public class Heap<E extends Comparable<E>> implements HeapAPI<E>
{
private ArrayList<E> tree;
public Heap()
{
tree = new ArrayList<>();
}
// don't believe the rest of the class is necessary to show
}
私はArrayListを介してPCBオブジェクトの関数を呼び出すために、次の主な方法を試みた
public class PCB implements Comparable<PCB>
{
private int priority;
// various private variables
public PCB()
{
priority = 19;
// instantiated variables
}
// don't believe the rest of the code is necessary
// the one specific function of PCB I use follows
public int getPriority()
{
return priority;
}
}
PCB.java HeapオブジェクトのarraylistにPCBオブジェクトを挿入した後
Main.java
public class Main
{
public static void main(String[] args) throws HeapException
{
Heap temp = new Heap();
PCB block = new PCB();
PCB block1 = new PCB();
PCB block2 = new PCB();
temp.insert(block);
temp.insert(block1);
temp.insert(block2);
block.getPriority();
// does not work
int num = temp.peek().getPriority();
//does not work
num = temp.get(0).getPriority();
}
私はプログラムがシンボルを見つけることができないことを取得していますエラー:メソッドgetPriorityを()。
[また、java.util.ArrayListをインポートします。各ファイルで呼び出されます]
私は熱い瞬間にジェネリックスを学び、適用しようとしていましたが、今は固執しています。
私は何かが不明な場合は、簡単にコードを追加したり、問題を明確にすることができます。
ご協力いただければ幸いです。
ありがとうございます!
PCBが「自然な」順序付けをしているとみなされない限り(そして、PCBは「プリント回路基板」を意味するとは思わない)。代わりに 'PCB'は' Comparable 'を実装するべきではなく、' HeapAPI'は 'Comparable'型に制約する必要はありません。 'HeapAPI'の実装者のコンストラクタに' Comparator 'を提供して、要素をソートすることができます。 [これに関するたくさんの質問/回答](https://stackoverflow.com/questions/4108604/java-comparable-vs-comparator) –