List<UserContribution> userContributions = new ArrayList<>();
...
Collections.sort(userContributions, new Comparator<UserContribution>() {
@Override
public int compare(UserContribution o1, UserContribution o2) {
return o1.date.after(o2.date) ? -1 : o1.date.before(o2.date) ? 1 : 0;
}
});
userContributions
最终会有3个项目。 compare
方法中设置的断点未被命中(并且Android Studio将其显示为非有效断点),因此我的项目未进行排序。为什么来?
谢谢!
答案 0 :(得分:0)
我建议避免嵌套的三元操作,或者将compare
方法委托给被比较的类。这使代码更具可读性,有助于避免比较中潜在的排序错误,并允许您在每个分支中插入断点以查看比较结果。
public int compare(UserContributions o1, UserContributions o2) {
if (o1.date.after(o2)) {
return 1;
else if (o1.date.before(o2)) {
return -1;
else {
return 0;
}
}
请注意,这是一种容易出错的方法,因为您依赖于date.before()
和date.after()
正确模仿操作<
和>
。我个人更喜欢选项2。
public int compare(UserContributions o1, UserContributions o2) {
return o1.date.compareTo(o2.date);
}
请注意,date.compare()
方法将负责定义日期比较。