【问题标题】:How to sort Arraylist of LinkedHashMap Arraylist<LinkedHashMap<String,String>?如何对 LinkedHashMap Arraylist<LinkedHashMap<String,String> 的 Arraylist 进行排序?
【发布时间】:2012-03-24 16:12:48
【问题描述】:

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

【问题讨论】:

  • ArrayList 只有在 T 实现 Comparable 接口时才能排序。所以你需要设计一个自定义的 LinkedHashMap 类实现 Comparable 然后使用 Collections.sort() 对它们进行排序。
  • 我建议使用实体(pojo)而不是存储对象的链接哈希图,它可以帮助您实现比较器。您可以通过简单的谷歌搜索“如何在 java 中对 ArrayList 进行排序”找到十几个链接。希望这会有所帮助。

标签: java sorting collections hashmap linkedhashmap


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以实现Comparator&lt;T&gt; 并使用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;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 2011-08-19
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2011-03-11
      • 1970-01-01
      相关资源
      最近更新 更多