【问题标题】:Android: How to Order ArrayList<HashMap<String,String>>?Android:如何订购 ArrayList<HashMap<String,String>>?
【发布时间】:2012-08-27 07:02:04
【问题描述】:

我将产品的详细信息保存在地图中并添加到 ArrayList> 并设置到自定义列表适配器中。我需要按价格对其中的值进行排序。如何实现?提前致谢。

【问题讨论】:

标签: java android arraylist


【解决方案1】:

请使用以下代码:

ArrayList< HashMap< String,String >> arrayList=populateArrayList();
    Collections.sort(arrayList, new Comparator<HashMap< String,String >>() {

        @Override
        public int compare(HashMap<String, String> lhs,
                HashMap<String, String> rhs) {
            // Do your comparison logic here and retrn accordingly.
            return 0;
        }
    });

【讨论】:

  • +1 谢谢你,你的代码帮助了我(因为你是第一个就接受了)
【解决方案2】:

您可以实现Comparator&lt;Map&lt;String, String&gt;&gt;Comparator&lt;HashMap&lt;String, String&gt;&gt;

How sort an ArrayList of HashMaps holding several key-value pairs each? 回答得很好:

class MapComparator implements Comparator<Map<String, String>>{
    private final String key;

    public MapComparator(String key){
        this.key = key;
    }

    public int compare(Map<String, String> first,
                       Map<String, String> second){
        // TODO: Null checking, both for maps and values
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}

...
Collections.sort(arrayListHashMap, new MapComparator("value"));

也看How to sort a Map on the values in Java?

【讨论】:

    【解决方案3】:

    您可以简单地使用它来对数组列表中的对象进行自定义排序,

    public class MyComparator implements Comparator<MyObject> {
        @Override
        public int compare(MyObject o1, MyObject o2) {
            return o1.getYOUROBJ1STR.compareTo(o2.getYOUROBJ2STR);
        }
    }
    

    如果您仍然遇到地图排序问题,请告诉我

    【讨论】:

      【解决方案4】:

      如果是 ArrayList 的情况,可以同时使用比较器和 Collections 类来完成

      检查这个link

      感谢拉尔斯·沃格尔

      【讨论】:

        【解决方案5】:

        我想你正在寻找这个:-

        Sort ArrayList of custom Objects by property

        sorting a List of Map<String, String>

        希望对你有帮助...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-16
          • 2013-07-29
          • 2017-06-01
          • 2012-06-18
          • 2011-12-02
          • 2018-01-05
          相关资源
          最近更新 更多