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(Without Arraylist) 排序。
但是我如何对 LinkedHashMap 的 Arraylist 进行排序(使用循环或迭代器可能是可能的,但还有其他简单的方法吗?)谢谢

4

2 回答 2

3

您可以实现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;
    }
});
于 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 回答