在Java 7中编译一些Java代码然后运行它之后,我得到了"比较方法违反了它的一般合同".
我看过比较方法违反了它的一般合同!仅限Java 7并意识到我的代码在以前版本的Java中被忽略了.但是,我无法弄清楚我的代码有什么问题.Collections.sort()生成错误.
我的代码是:
public Comparator sortBySmoothDays() {
Comparator c = new Comparator() {
public int compare(Object arg0, Object arg1) {
Date date0 = ((PosObject)arg0).getDate();
Date date1 = ((PosObject)arg1).getDate();
double d1 = MyUtils.calcSmoothDays(date0, new Date());
double d2 = MyUtils.calcSmoothDays(date1, new Date());
if (d1 >= d2) {
return 1;
}
else {
return -1;
}
}
};
return c;
}
Comparator c = ComparatorUtils.getInstance().sortBySmoothDays();
Collections.sort(posList, c);
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?谢谢!
Kev*_*ell 32
如果值相等,比较器必须返回0.在当前的实现中,如果它们相等则返回1.double正确比较您的值的最简单方法是调用Double.compare:
double d1 = MyUtils.calcSmoothDays(date0, new Date());
double d2 = MyUtils.calcSmoothDays(date1, new Date());
return Double.compare(d1, d2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31649 次 |
| 最近记录: |