实现比较,但在调用Arrays.sort时出现异常

use*_*412 1 java comparator

这是我的班级:

public static class __9_7_Person implements Comparator<__9_7_Person> {
    private int height;
    private int weight;
    public __9_7_Person(int height, int weight) {
        this.height = height;
        this.weight = weight;
    }
    public int compare(__9_7_Person p1, __9_7_Person p2) {
        if (p1.height != p2.height) {
            return p1.height - p2.height;
        }
        else {
            return p1.weight - p2.weight;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个这样的数组:

__9_7_Person p[] = {new __9_7_Person(60, 100),
                    new __9_7_Person(70, 150),
                    new __9_7_Person(56, 90),
                    new __9_7_Person(75, 190),
                    new __9_7_Person(60, 95),
                    new __9_7_Person(68, 110),
};
Run Code Online (Sandbox Code Playgroud)

但是当我调用Arrays.sort(p)时出现异常:"线程中的异常"主"java.lang.ClassCastException:ch_9 $ __ 9_7_Person无法强制转换为java.lang.Comparable"

cpo*_*rte 8

您实现了Comparator,而不是Comparable.您应该实现Comparable而不是Comparator.

文档中所述:

数组中的所有元素都必须实现Comparable接口.

如果您希望能够为同一个类具有不同的排序顺序,则比较器非常有用.在这种情况下,不能使用Comparable