2015-11-22 79 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)]存储到字段中,并确保它不为空。