进一步排序已排序的列表

时间:2013-03-26 20:36:52

标签: java android list

我有一个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并给我一个按类型排序的列表,其中的类型按姓氏排序。

1 个答案:

答案 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;