您可以使用Java中的Comparator创建许多排序序列是什么意思?

vis*_*ale -3 java sorting collections comparable comparator

在可比性中,只能创建一个排序序列,而在比较器中,可以创建许多排序序列。排序顺序在这里到底是什么意思。

T. *_*rie 6

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

这意味着当对象实现Comparable接口时,只能定义一个顺序。让我们用自定义类举一个更具体的例子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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,类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());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是为同一类定义的另外两个排序序列。