Как отсортировать Arraylist из LinkedHashMap Arraylist <LinkedHashMap <String, String>? - PullRequest
0 голосов
/ 07 марта 2012

Как я могу отсортировать Arraylist из LinkedHashMapEx.

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

Выше приведен мой ArrayList из LinkedHashMap, и я хочу отсортировать значение, используя Ref в качестве ключа (например, Sort By City или Sort by name)Я сделал сортировку LinkedHashMap (без Arraylist) с помощью Collection.Sort & сопоставимых.Но как я могу отсортировать мой Arraylist из LinkedHashMap (с помощью Loop или Iterator это возможно, но есть ли другой простой способ?) Спасибо

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Вы можете реализовать Comparator<T> и использовать Collections.sort для сортировки по определенному значению вашего LinkedHashMap


Однако, в вашем случае, вы должны воспользоваться преимуществами класса. Сделайте класс, который представляет данные в 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;
    }
});
0 голосов
/ 21 ноября 2012

В качестве альтернативы вы можете сделать следующее:

    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")));
                }
            });
...