0
我在爲數據結構類分配時遇到了很多麻煩。我需要使用雙向鏈表實現一個雙端優先級隊列,但我的教授提供的用於測試它的代碼中有一些奇怪的東西。我不明白的部分是爲什麼他使用DoubleEndedPriorityQueue,但添加了對象而不是整數。我得到的錯誤是沒有方法添加(對象),這是真的。通用雙端優先級隊列的問題
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這就是我的想法。順便說一句,你可以幫助我用別的東西嗎?他也給了我們這個代碼: private Comparator <?超級AnyType> cmp; 私有節點 first = null; 私有節點 last = null; 但我不知道如何使用比較器,我一直試圖做cmp.compare(obj1,obj2),但它總是給我一個零點異常,我敢肯定,這兩個對象都不爲空。我認爲這是因爲Integer類沒有實現比較器,但是他如何期望我們這樣做呢? –
(通常在一個地方發佈幾個問題是不好的做法,但我會嘗試給出一些指針)Integer不實現Comparator,但它確實實現了Comparable - 如果您搜索那些應該能夠查找文章的人這些如何不同。如果其中任何一個參數爲null,'compare'可以拋出NPE,否則聽起來像'compare'中的代碼不正確(可能使用不帶空值檢查的可空字段)。你在使用調試器嗎?使用一個會使你的生活*變得更好。 – hugh