私のデータ構造クラスの割り当てに多くの問題があります。私は二重にlinkedListを使用してダブルエンド優先順位のキューを実装する必要がありますが、私の教授がそれをテストするために提供したコードにはいくつか変なものがあります。私が理解していない部分はなぜDoubleEndedPriorityQueueを使用していますが、Integersの代わりにオブジェクトを追加する理由です。私が得ているエラーは、メソッドadd(オブジェクト)がtrueであるということです。一般的なダブルエンド優先順位キューの問題
public class Test1ForAssign2 {
public static void main(final String[] args) {
final DoubleEndedPriorityQueue<Integer> sampleL = (DoubleEndedPriorityQueue<Integer>)new ListDoubleEndedPriorityQueue();
sampleL.add((Object)5);
sampleL.add((Object)12);
sampleL.add((Object)5);
sampleL.add((Object)1);
sampleL.add((Object)(-7));
sampleL.add((Object)3);
System.out.println("Priority Queue Contents: ");
System.out.println("Deleting: " + sampleL.deleteMin());
System.out.println("Deleting: " + sampleL.deleteMax());
}
public interface DoubleEndedPriorityQueue<AnyType>{
void makeEmpty ();
void add (AnyType x);
AnyType deleteMin ();
AnyType deleteMax ();
AnyType findMin ();
AnyType findMax ();
boolean isEmpty ();
}
ありがとう@hughは私が思ったものです。あなたは何か他のもので私を助けてもらえますか?彼はまた私達にこのコードを与えました: プライベートコンパレータ<?スーパーAnyType> cmp; プライベートノード first = null; プライベートノード last = null; しかし、私はどのようにコンパレータを使用するかわからない、私はcmp.compare(obj1、obj2)をしようとしてきましたが、それは常に私にnullpointの例外を与えると私は両方のオブジェクトがnullではないと確信しています。 IntegerクラスはComparatorを実装していないためだと思いますが、どうやったら私たちはそれをどうしたらいいのでしょうか? –
(いくつかの質問を1つの場所に投稿するのは悪い習慣ですが、いくつかのポインタを出そうとします)IntegerはComparatorを実装していませんが、Comparableを実装しています。これらがどのように異なるか。引数のいずれかがnullの場合、 'compare'はNPEを投げることができます。それ以外の場合は、' compare'のコードが正しくないように聞こえます(おそらくヌルチェックなしのnullableフィールドを使います)。デバッガを使用していますか? 1つを使用すると、あなたの人生が大きく向上します*。 – hugh