我有一个maps
列表,我已按一种类型排序,但现在我想进一步对该列表进行排序
原始排序
Collections.sort(list, new Comparator<Map<String,Object>>(){
@Override
public int compare(Map<String, Object> m1,Map<String, Object> m2) {
return m1.get("type").toString().compareTo(m2.get("type").toString()); //type is a 1 or 0
}
});
现在我想要做的就是保留这个顺序,但是我希望通过姓氏进一步对该列表进行排序。我是否必须将其拆分为2个列表,一个类型为0
的列表,另一个类型为1
,然后将这些列表一起添加?
基本上我想复制一个SQL排序,我会做type ASC, lastName ASC
并给我一个按类型排序的列表,其中的类型按姓氏排序。
答案 0 :(得分:4)
你可以这样做:
int compareType = m1.get("type").toString().compareTo(m2.get("type").toString());
if(compareType != 0) {
return compareType;
}
return m1.get("name").toString().compareTo(m2.get("name").toString());
如果要对许多键进行排序,这将更清晰:
for(String key : new String[] { "type", "name" }) {
int compare = m1.get(key).toString().compareTo(m2.get(key).toString());
if(compare != 0) {
return compare;
}
}
return 0;