Java的Strings中的compareTo方法不一致

时间:2018-08-06 01:49:50

标签: java comparator

我有一个名为Person的对象,其属性为name,并且有一个优先级为Person的队列pq。我重写了compareTo类的Person函数,以按相反的字母顺序对其进行排序:

    @Override
    public int compareTo(Person p)
        return p.getName().compareTo(this.name);

然后我添加了以下名称:

    PriorityQueue<Person> pq = new PriorityQueue<>();
    pq.add(new Person("Ben"));
    pq.add(new Person("Ben"));
    pq.add(new Person("Adam"));
    pq.add(new Person("Zedd"));
    System.out.println(pq);

但是从输出中您可以看到排序无法正常工作:

[Name: Zedd, Name: Ben, Name: Adam, Name: Ben]

但是,如果我在compareTo函数中交换比较器的顺序,则它看起来像这样:

return this.name.compareTo(p.getName());

然后输出对于常规字母顺序可以正常工作:

[Name: Adam, Name: Ben, Name: Ben, Name: Zedd]

为什么会这样?

0 个答案:

没有答案