您可以使用 java 中的比较器创建多个排序序列是什么意思?

What do you mean by you can create many sort sequences using Comparator in java?

在comparable中,只能创建一个排序序列,而在comparator中,可以创建多个排序序列。 sort sequence 在这里是什么意思

通过让您的 class 实现 Comparable,您给了它一个自然的顺序。例如,Integer 按其 int 值排序。但是,您可以实施额外的自定义 Comparators 来实现您希望的任何排序。例如,如果我们坚持使用 Integer 示例,您可以实现 Comparator 以根据数字的总和以及它们是否可以被 7 整除来对 Integer 进行排序,或者按照您能想到的任何顺序。

基本上,排序序列只是一种顺序关系(数学上)。这是一种对对象进行排名的方式。

意思就是一个Object实现Comparable接口时,只能定义一个order。让我们用自定义 class MyFile:

来举一个更具体的例子
public class MyFile implements Comparable<MyFile> {
    private String name;
    private Date creationDate;
    private String author;

    @Override
    public int compareTo(MyFile other) {
        return this.name.compareTo(other.name);
    }
}

在此示例中,class MyFile 实现了 Comparable 接口,该接口按名称升序对 MyFile 的集合进行排序。它实现了一个排序序列。但是如果你想按降序对它们进行排序?还是按日期?还是作者?然后你必须创建不同的顺序。但是,您不能第二次实现 Comparable 接口。这是当您创建自定义 Comparator 以获得您期望的行为时。每个 Comparator 实现一个排序序列。

public class DateComparator implements Comparator<MyFile> {

    @Override
    public int compare(MyFile f1, MyFile f2) {
        return f1.getDate().compareTo(f2.getDate());
    }
}

public class ReverseNameComparator implements Comparator<MyFile> {

    @Override
    public int compare(MyFile f1, MyFile f2) {
        return f2.getName().compareTo(f1.getName());
    }
}

这是为相同的 class.

定义的另外两个排序序列