0

ハッシュマップを複数のキーで並べ替えたいのですが、現時点では次のコードを使用しています

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は、時間キー "stamp"で並べ替えられますが、SQLステートメント "order by res_id、stamp"のように、キーres_id(int)で並べ替えてから、時間で並べ替えたいと思います。

編集:与えられた答えに基づく解決策

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;
        }
    });
4

1 に答える 1

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が返すものについて読んでください。

于 2012-11-20T17:56:46.580 に答える