我正在使用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));
}
}