Java 比较对象不起作用

Java 比较对象不起作用,java,oop,compare,Java,Oop,Compare,我试图比较我自己的类Person的对象名称,以便对ArrayList进行排序。我遵循老师的做法,但似乎不明白为什么不起作用 import java.util.*; public class SortName implements Comparable<Person>{ public int compare(Person p1, Person p2){ return p1.getName().compareTo(p2.getName()); } }

我试图比较我自己的类Person的对象名称,以便对ArrayList进行排序。我遵循老师的做法,但似乎不明白为什么不起作用

import java.util.*;

public class SortName implements Comparable<Person>{
    public int compare(Person p1, Person p2){
        return p1.getName().compareTo(p2.getName());
    }
}
import java.util.*;
公共类SortName实现了可比较的{
公共整数比较(人员p1、人员p2){
返回p1.getName().compareTo(p2.getName());
}
}
compare()方法是正确的,但您使用了错误的接口。实现比较器,不可比较。它们很容易混淆

import java.util.*;

public class SortName implements Comparator<Person>{
    public int compare(Person p1, Person p2){
        return p1.getName().compareTo(p2.getName());
    }
}
import java.util.*;
公共类SortName实现了Comparator{
公共整数比较(人员p1、人员p2){
返回p1.getName().compareTo(p2.getName());
}
}

它应该是
比较器
接口<代码>比较器接口具有
compare()
方法不
Comparable

public class SortName implements Comparator<Person>
公共类SortName实现了Comparator

您可以使用
compareTo()方法进行尝试。
方法:

import java.util.*;

public class SortName implements Comparable<Person>{
    public int compareTo(Person p2){
        return this.getName().compareTo(p2.getName());
    }
}
import java.util.*;
公共类SortName实现了可比较的{
公共内部比较(p2人){
返回这个.getName().compareTo(p2.getName());
}
}
指的是

接口允许您重写其
int比较(对象o1,对象o2)
方法
实现此接口可以帮助您对内置数据结构甚至自定义定义的数据结构进行排序

接口允许您重写其
int compareTo(对象o)
方法。

示例:
(x.compareTo(y)==0)=(x.equals(y))

输出是什么?你有什么错误吗?不正确。Comparable has的compareTo()方法不接受两个参数,其compareTo(Object obj)