从自定义对象反转 CompareTo 方法的一部分

D.B*_*zer 6 java sorting reverse compare object

我有一个名为 的对象project,我想按该项目的 2 个字段对该项目进行排序:

第一:按日期(Gregorian Callander);第二:按名称(字符串);

我想按日期从新到旧对项目进行排序。我知道执行此操作的唯一方法是反转集合。不过,我想对名称上具有相同日期的项目进行排序(按字母顺序),其中反向也会反转这部分排序。

有没有一种方法可以仅反转部分排序方法,或者有任何其他方法可以首先按日期(反向)然后按字符串(正常顺序 az)排序?

目前我正在重写对象compareTo方法,如下所示:

   @Override
public int compareTo(Project project) {
    int i = this.projectDate.compareTo(project.projectDate);
    if(i != 0) return i;

    return this.projectName.compareTo(project.projectName);

}
Run Code Online (Sandbox Code Playgroud)

Mod*_*ens 7

Date#compareTo如果此 Date 位于 Date 参数之前,则返回值 < 0,否则返回值 > 0。

如果你想从新排序到旧排序,你可以只返回负的比较结果:

@Override
public int compareTo(Project project) {
    int i = this.projectDate.compareTo(project.projectDate);
    if(i != 0) return -i;  // reverse sort

    return this.projectName.compareTo(project.projectName);
}
Run Code Online (Sandbox Code Playgroud)