1

すでに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つのリストに分割する必要がありますか?1つはタイプのリストで、もう1つはタイプ0のリストで1、リストを一緒に追加するだけですか?

type ASC, lastName ASC基本的に、SQLの並べ替えを複製して、タイプで並べ替えられたリストと、名前で並べ替えられたタイプを取得したいと思います。

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 に答える