Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在比较两个物体时有些问题_Java_Compare - Fatal编程技术网

Java 我在比较两个物体时有些问题

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

所以最近我一直在做“电话簿”项目,它使用“二叉搜索树”

电话簿正在使用BSTree。树的每个节点都是BTNode。在main类中,我用Pair类替换E,当我定义节点时,Pair类有(stringname,stringnumber)

我有以下比较器类来比较两种E类型:

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 to

stacktrace表明您的问题是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();