首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对LinkedHashMap Arraylist<LinkedHashMap<String,String>的数组列表排序?

如何对LinkedHashMap Arraylist<LinkedHashMap<String,String>的数组列表排序?
EN

Stack Overflow用户
提问于 2012-03-07 13:29:34
回答 2查看 4.9K关注 0票数 0

如何对LinkedHashMap的数组列表进行排序

例如。

代码语言:javascript
复制
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 &我想要以引用为关键字对值进行排序(如按城市排序或按名称排序)

我已经使用Collection.Sort &LinkedHashMap进行过可比较排序(不使用数组列表)。

但是我如何对我的LinkedHashMap数组列表进行排序(使用循环或迭代器可能是可行的,但是有没有其他简单的方法呢?)谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-03-07 13:43:21

您可以实现Comparator<T>并使用Collections.sortLinkedHashMap的特定值进行排序

然而,在您的情况下,您应该利用类。创建一个用LinkedHashMap表示数据的类

代码语言:javascript
复制
public class MyClass {
    private String city;
    private String name;
    private String area;

    // implement some getters here.
}

然后,再次使用Collections.sort,并实现所需的比较器

代码语言:javascript
复制
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;
    }
});
票数 3
EN

Stack Overflow用户

发布于 2012-11-21 20:51:17

或者,您可以执行以下操作:

代码语言:javascript
复制
    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")));
                }
            });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9596306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档