Java 我在比较两个物体时有些问题
所以最近我一直在做“电话簿”项目,它使用“二叉搜索树” 电话簿正在使用BSTree。树的每个节点都是BTNode。在main类中,我用Pair类替换E,当我定义节点时,Pair类有(stringname,stringnumber) 我有以下比较器类来比较两种E类型:Java 我在比较两个物体时有些问题,java,compare,Java,Compare,所以最近我一直在做“电话簿”项目,它使用“二叉搜索树” 电话簿正在使用BSTree。树的每个节点都是BTNode。在main类中,我用Pair类替换E,当我定义节点时,Pair类有(stringname,stringnumber) 我有以下比较器类来比较两种E类型: import java.util.Comparator; public class BTNodeComparator<E extends Comparable<E>> implements Comparato
import java.util.Comparator;
public class BTNodeComparator<E extends Comparable<E>> implements Comparator<E>
{
public int compare(final E a, final E b)
{
return (a.compareTo(b));
}
}
现在,当我运行程序,它到达比较器时,它在比较器上给我错误,因为现在它在两对之间进行比较
我如何解决这个问题?我想比较一下这两对的名字
在BST中插入第二个节点(对)后出现以下错误:
java.lang.NullPointerException
在Pair.compareTo(Pair.java:36)/@return name.compareTo(Pair.getName())中;
在Pair.compareTo(Pair.java:2)/@public类Pair实现了Comparable
在BTNodeComparator.compare(BTNodeComparator.java:24)/@return(a.compareTo(b));
在BTNodeComparator.compare(BTNodeComparator.java:20)/@公共类BTNodeComparator实现Comparator
在BSTree.search(BSTree.java:285)
在BSTree.insert(BSTree.java:300)
在PhoneBook.main(PhoneBook.java:25)
顺便说一句,我在BSTree中声明了BTNodeComparator,如下所示:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();
protectedcomparator c=新的BTNodeComparator();
如果(c.compare(target,cursor.getElement())<0)cursor=cursor.getLeft();
提前感谢您的帮助:)您的stacktrace表明您的问题是名称成对为空
。。或作为比较参数的pair tostacktrace表明您的问题是pair中的名称为空
。。或配对,该配对是一个参数,通过始终在所有配对中提供一个名称来进行比较。首先验证名称是否是问题所在。在比较方法中打印两个名称。我的错误,我定义的对CALS错误。问题解决了。谢谢通过在所有对中始终给出一个名称。首先验证名称是否是问题所在。在比较方法中打印两个名称。我的错误,我定义的对CALS错误。问题解决了。谢谢
java.lang.NullPointerException
at Pair.compareTo(Pair.java:36) // @ return name.compareTo(pair.getName());
at Pair.compareTo(Pair.java:2) // @ public class Pair implements Comparable<Pair>
at BTNodeComparator.compare(BTNodeComparator.java:24) // @ return (a.compareTo(b));
at BTNodeComparator.compare(BTNodeComparator.java:20) // @ public class BTNodeComparator<E extends Comparable<E>> implements Comparator<E>
at BSTree.search(BSTree.java:285)
at BSTree.insert(BSTree.java:300)
at PhoneBook.main(PhoneBook.java:25)
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();