2015-11-22 76 views
0

我正在嘗試實現通用堆棧。要插入數據,我必須比較陣列的位置。當我有這個,因爲只有整數我能使用這個比較通用項目

while (heap[getParent(currentItem)] > heap[currentItem]) { 

轉換爲泛型我的研究和嘗試這樣的:

while (heap[getParent(currentItem)].compareTo(heap[currentItem]) < 0) { 

這是不成功的,因爲它給出了一個NullPointerException異常。如何轉換代碼以正確比較項目?

+3

[我如何解決NullPointerException](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – markspace

+0

我明白NullPointerException,但我不明白如何將我的初始while循環轉換爲一個將比較泛型導致我得到NullPointerException。您列出的參考文獻與泛型的比較沒有任何關係。 –

+0

仿製藥與答案無關。這只是一個空指針異常。您將其修復爲與其他任何一樣:不要在您的陣列中存儲空值。 – markspace

回答

0

您需要使用擴展比較器的泛型類型,例如<T extends Comparable<T>>而不是<T>。然後,您可以使用compareTo方法比較項目。如果您收到空指針異常,則需要確保您試圖調用compareTo的對象不應爲空。在你的情況下,這將是heap[getParent(currentItem)]。我建議將heap[getParent(currentItem)]存儲到字段中,並確保它不爲空。