这是实际情况。有一个VO
Name Usagecount returncount number
A 0 0 123
B 1 1 234
C 0 2 345
D 2 3 546
首先它应该根据使用次数,降序排序。如果找到相同的使用次数,则应按升序对返回码进行排序。如果找到相同的返回计数,则应按升序对数字进行排序。 当我在下面的代码片段中尝试这个时
public class SomeComparator implements Comparator<SomeVO> {
@Override
public int compare(SomeVO o1, SomeVO o2) {
int value1 = o2.getUsageCount().compareTo(o1.getUsageCount());
if (value1 == 0) {
int value2 = o1.getNumberofReturns().compareTo(o2.getNumberofReturns());
if (value2 == 0) {
return o1.getNumber().compareTo(o2.getNumber());
} else {
return value2;
}
}
return value1;
}
}
我得到输出D,B,C,但我期待它为D,B,A,C。
答案 0 :(得分:4)
没有。您应该能够在Comparator
(或Comparable
)实现中实现所有排序逻辑。
例如(伪代码):
然后,您的Collections.sort
调用将根据compare
或compareTo
中的逻辑执行相应的排序。