安卓:如何对ArrayList<HashMap<String,String>>进行排序?

4

我正在将产品详细信息保存在一个映射(Map)中,并添加到ArrayList<HashMap <String,String>>中,然后将其设置为自定义列表适配器。我需要按价格对这些值进行排序。如何实现?提前致谢。


尝试在谷歌上搜索地图排序。 - d1e
5个回答

18

请使用以下代码:

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

7
您可以实现一个Comparator<Map<String, String>>Comparator<HashMap<String, String>>来排序。以下链接回答了如何对包含多个键值对的HashMap的ArrayList进行排序: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"));

另外,请参考如何在Java中按值对Map进行排序?


2

你可以简单地使用这个功能来对数组列表中的对象进行自定义排序。

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

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


1

如果是ArrayList的情况,可以使用比较器和Collections类一起完成。

请查看链接

感谢Lars Vogel。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接