0


LinkedHashMap ExのArraylistをソートするにはどうすればよいですか。

ArrayList<LinkedHashMap<String, String>> list = new ArrayList<LinkedHashMap<String, String>>();
        LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
        linkedHashMap.put("city", "AB");
        linkedHashMap.put("name", "N");
        linkedHashMap.put("area", "xyz");
        list.add(linkedHashMap);
        linkedHashMap = new LinkedHashMap<String, String>();
        linkedHashMap.put("city", "BA");
        linkedHashMap.put("name", "AB");
        linkedHashMap.put("area", "xyz");
        list.add(linkedHashMap);
        linkedHashMap = new LinkedHashMap<String, String>();
        linkedHashMap.put("city", "CH");
        linkedHashMap.put("name", "AB");
        linkedHashMap.put("area", "PQ");
        list.add(linkedHashMap);

上記は LinkedHashMap の ArrayList です & Ref をキーとして値を並べ替えたい (都市で並べ替えや名前で並べ替えのよう
に) Collection.Sort を使用して並べ替えを行いました
しかし、LinkedHashMap の Arraylist を並べ替えるにはどうすればよいですか (ループまたはイテレータを使用すると可能ですが、他に簡単な方法はありますか?) ありがとう

4

2 に答える 2

3

を実装し、特定の値でソートするためにComparator<T>使用できますCollections.sortLinkedHashMap


ただし、あなたの場合は、クラスを利用する必要があります。のデータを表すクラスを作成しますLinkedHashMap

public class MyClass {
    private String city;
    private String name;
    private String area;

    // implement some getters here.
}

次に、もう一度、 を使用しCollections.sortて、必要なコンパレータを実装します

List<MyClass> myClasses = getMyClasses();
Collections.sort(myClasses, new Comparator<MyClass>(){
    @Override
    public int compare(MyClass o1, MyClass o2) {
        // implement sorting behavior you want.
        return 0;
    }
});
于 2012-03-07T05:43:21.187 に答える
0

または、次のようにすることもできます。

    Collections.sort(list ,
            new Comparator<LinkedHashMap<String, String>>()
            {
                @Override
                public int compare(LinkedHashMap<String, String> obj1,
                        LinkedHashMap<String, String> obj2)
                {
                    return (obj1.get("city").compareTo(obj2.get("city")));
                }
            });
于 2012-11-21T12:51:17.460 に答える