4

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

4

5 回答 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;
        }
    });
于 2012-08-27T07:13:27.403 回答
7

您可以实现一个Comparator<Map<String, String>>Comparator<HashMap<String, String>>

如何对每个包含多个键值对的 HashMap 的 ArrayList 进行排序? 回答得很好:

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 进行排序?

于 2012-08-27T07:22:52.140 回答
2

您可以简单地将其用于数组列表中对象的自定义排序,

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

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

于 2012-08-27T07:18:26.777 回答
1

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

检查此链接

感谢拉斯沃格尔

于 2012-08-27T07:23:10.943 回答
1

我想你正在寻找这个: -

按属性对自定义对象的 ArrayList 进行排序

排序 Map<String, String> 的列表

希望它会帮助你...

于 2012-08-27T07:26:31.750 回答