我想用多个键对Hashmap进行排序,目前我使用以下代码
Collections.sort(ilv2, new Comparator<HashMap<String,String>>() {
public int compare(HashMap<String, String> arg0, HashMap<String, String> arg1) {
// TODO Auto-generated method stub
Time d1 = Time.valueOf(arg0.get("stamp"));
Time d2 =Time.valueOf(arg1.get("stamp"));
return d1.compareTo(d2);
}
});
Hasmap ilv2是Time键“stamp”的排序,但现在我想按键res_id(int)排序,然后按时间排序,就像sql语句“order by res_id,stamp”一样 有什么建议吗?
编辑: 基于给定答案的解决方案
Collections.sort(ilv2, new Comparator<HashMap<String,String>>() {
public int compare(HashMap<String, String> arg0, HashMap<String, String> arg1) {
// TODO Auto-generated method stub
int i = 0;
int r1 = Integer.valueOf(arg0.get("resid"));
int r2 = Integer.valueOf(arg1.get("resid"));
i = r1-r2;
if(i==0){
Time d1 = Time.valueOf(arg0.get("stamp"));
Time d2 =Time.valueOf(arg1.get("stamp"));
i = d1.compareTo(d2);
}
return i;
}
});
答案 0 :(得分:1)
从我的代码,这样的事情:
public int compare(ProductItemData pr1, ProductItemData pr2) {
int i = pr1.crossed.compareTo(pr2.crossed);
if(i==0) {
int j = pr1.addTime.compareTo(pr2.addTime);
if(j==0)
return ((Long)pr1.id).compareTo(pr2.id);
else
return j;
}
return i;
}
了解compareTo返回的内容。