vis*_*ale -3 java sorting collections comparable comparator
在可比性中,只能创建一个排序序列,而在比较器中,可以创建许多排序序列。排序顺序在这里到底是什么意思。
基本上,排序序列只是数学上的顺序关系。这是一种对对象进行排名的方法。
这意味着当对象实现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)
这是为同一类定义的另外两个排序序列。