2

この LinkedHashMap のリストを持っていますが、どのように値を注文できますか?

    List<LinkedHashMap<String, Object>> list = more "key:value"......

たとえば、私のリストには次のものがあります。

    [{"field1": "z", "field2":"a"},
     {"field1" : "b", "field2":"x"}]

たとえば、「field1」キーの値に基づいて注文したい:

    [{"field1": "b", "field2":"x"},
     {"field1" : "z", "field2":"a"}]

私はこのクラスを作りました:

public class OrderComparator  implements Comparator {
    String field;

    public OrderComparator (String field){
        this.field = field;
    }

    @Override
    public int compare(Object obj1, Object obj2) {
          LinkedHashMap<String, Object> a = (LinkedHashMap<String, Object>) obj1;
          LinkedHashMap<String, Object> b = (LinkedHashMap<String, Object>) obj2;

          return a.get(this.field).toString().compareTo(b.get(this.field).toString());
    }   
}

と :

Collections.sort(list, new OrderComparator(sortColumn));

正しい?ありがとうございます!!!

4

2 に答える 2

5

a を書き、マップのリストを並べ替えるためにComparator<Map<String,Object>>使用します。Collections.sort(list, comparator)

Java チュートリアル>コレクション トレイル>オブジェクトの順序付けを参照してください。

于 2013-05-23T08:40:51.023 に答える
3

カスタムを使用するComparator

Collections.sort(list, new Comperator<Map<String, Object>>() {
    public int compare(Map<String, Object> a, Map<String, Object> b) {
        return a.get("field1").compareTo(b.get("field1"));
    }
});
于 2013-05-23T08:43:28.007 に答える