4

製品の詳細をマップに保存し、ArrayList< HashMap< String,String >> に追加して、カスタム リスト アダプターに設定しています。値を価格で並べ替える必要があります。それを達成する方法は?前もって感謝します。

4

5 に答える 5

18

以下のコードを使用してください。

ArrayList< HashMap< String,String >> arrayList=populateArrayList();
    Collections.sort(arrayList, new Comparator<HashMap< String,String >>() {

        @Override
        public int compare(HashMap<String, String> lhs,
                HashMap<String, String> rhs) {
            // Do your comparison logic here and retrn accordingly.
            return 0;
        }
    });
于 2012-08-27T07:13:27.403 に答える
7

Comparator<Map<String, String>>またはを実装できますComparator<HashMap<String, String>>

それぞれいくつかのキーと値のペアを保持するHashMapのArrayListをどのように並べ替えますか? よく答えます:

class MapComparator implements Comparator<Map<String, String>>{
    private final String key;

    public MapComparator(String key){
        this.key = key;
    }

    public int compare(Map<String, String> first,
                       Map<String, String> second){
        // TODO: Null checking, both for maps and values
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}

...
Collections.sort(arrayListHashMap, new MapComparator("value"));

Javaの値でマップをソートする方法もご覧ください。

于 2012-08-27T07:22:52.140 に答える
2

配列リスト内のオブジェクトのカスタムソートにこれを簡単に使用できます。

public class MyComparator implements Comparator<MyObject> {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return o1.getYOUROBJ1STR.compareTo(o2.getYOUROBJ2STR);
    }
}

マップの並べ替えでまだ問題が発生している場合はお知らせください

于 2012-08-27T07:18:26.777 に答える
1

ArrayListの場合、コンパレータとコレクションクラスを一緒に使用して実行できます

このリンクを確認してください

Larsvogelに感謝します

于 2012-08-27T07:23:10.943 に答える
1

私はあなたがこれを探していると思います:-

カスタム オブジェクトの ArrayList をプロパティで並べ替える

Map<String, String> のリストのソート

それがあなたを助けることを願っています...

于 2012-08-27T07:26:31.750 に答える