繁体   English   中英

进一步排序已排序的列表

[英]Further Sort an already sorted 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并给我一个按类型排序的列表,其中的类型按姓氏排序。

你可以这样做:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM