我需要按名称排序对象列表,首先按日期和按日期排序..如下面的示例通过比较器:
- 19/03/2014 Anna Hatta
- 19/03/2014 Keller Jay
- 20/03/2014 Anna Hatta
- 20/03/2014 Keller Jay
- 20/03/2014 Zoner Charley
我知道如何按日期和名称单独订购,例如:
public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() {
public int compare(Prospect p1, Prospect p2) {
int res = p2.getDate().compareTo(p1.getDate());
return res;
}
};
但是我如何组合这些2并进行嵌套排序?
干杯!
答案 0 :(得分:2)
public static Comparator<Prospect> DATE_NAME_PROSPECTS = new Comparator<Prospect>() {
public int compare(Prospect p1, Prospect p2) {
int res = p1.getDate().compareTo(p2.getDate());
return res == 0 ? p1.getName().compareTo(p2.getName()) : res;
}
};
答案 1 :(得分:0)
在比较器比较(...)中,首先按比较重要的标准进行比较。如果得到0(相等),则返回由不太重要的标准获得的值。
通过这种方式,您可以使用嵌套排序顺序,如果需要,可以使用多层次的层次结构。
答案 2 :(得分:0)
public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() {
public int compare(Prospect p1, Prospect p2) {
int res = p2.getDate().compareTo(p1.getDate());
if(res == 0) {
p2.getName().compareTo(p1.getName());
}
return res;
}
};