Java 比较一般项目

Java 比较一般项目,java,Java,我正在尝试实现一个通用堆。要插入数据,我必须比较数组的位置。当我把它作为唯一的整数时,我可以使用它 while (heap[getParent(currentItem)] > heap[currentItem]) { 转换为泛型我研究并尝试了以下方法: while (heap[getParent(currentItem)].compareTo(heap[currentItem]) < 0) { while(heap[getParent(currentItem)]。比较(he

我正在尝试实现一个通用堆。要插入数据,我必须比较数组的位置。当我把它作为唯一的整数时,我可以使用它

   while (heap[getParent(currentItem)] > heap[currentItem]) {
转换为泛型我研究并尝试了以下方法:

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

这是不成功的,因为它给出了NullPointerException。如何转换代码以正确比较项目?

您需要使用扩展comparator的泛型类型,例如
,而不仅仅是
。然后您将能够使用
compareTo
方法比较项目。如果您得到的是null指针异常在上,则需要确保尝试调用
compareTo
的对象不应为空。在您的情况下,这将是
heap[getParent(currentItem)]
。我建议存储
heap[getParent(currentItem)]
转换为一个字段,并确保它不为空。

我了解NullPointerException,但我还不知道如何将初始while循环转换为一个比较泛型的循环,从而获得NullPointerException。您列出的引用与比较泛型无关。泛型与答案是肯定的。这只是一个空指针异常。您可以像其他任何异常一样修复它:不要在数组中存储空指针。