按多个键排序集合

时间:2012-11-20 17:38:24

标签: android sorting hashmap

我想用多个键对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;
        }
    });

1 个答案:

答案 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返回的内容。