1

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

4

1 回答 1

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;
于 2013-03-26T20:39:02.420 回答