我正在使用Collections.sort对一个ArrayList对象进行排序,我想看看是否有一个更有效的compareTo方法来完成我的工作。
方法如下:

@Override
public int compareTo(Song s) {
    if (runningTime > s.runningTime) {
        return -1;
    } else if (runningTime < s.runningTime) {
        return 1;
    }
    int lastCmp = title.compareTo(s.title);
    return (lastCmp != 0 ? lastCmp : composer.compareTo(s.composer));
}

如果有人能推荐一种更有效的方法(即更快的运行时间),我将非常感激。

最佳答案

正如mebigfatguy所说,任何改进都是微不足道的,但我认为您仍然可以稍微清理代码以减少不必要的if-else条件。我的两分钱。

public int compareTo(Song s) {
    if (runningTime != s.runningTime) {
        return s.runningTime - runningTime;
    }
    else {
        int lastCmp = title.compareTo(s.title);
        return (lastCmp != 0 ? lastCmp : composer.compareTo(s.composer));
    }
}

10-05 17:53