1
map = new LinkedHashMap<String, String>(); 
list = new ArrayList<HashMap<String, String>>(); 

map.put("id", id);
map.put("amt", amt);

list.add(map);

如何按升序对列表进行排序amt。我无法做到这一点。我真的很感激任何帮助。

我正在添加id,amt循环。如何用 key as 排序amt

id=1,2,3,4,5
amt=1000,33333,77,9087,5432
4

2 回答 2

3

只需使用 TreeMap

Map<String, String> map = new TreeMap<String, String>();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();

map.put("id", "id");
map.put("amd", "amd");

list.add(map);

System.out.println(list);

输出:

[{amd=amd, id=id}]

现在,如果Id是大写和amd小写,那么您应该覆盖构造函数中TreeMap使用的默认行为Comparator(以确保字符串键的排序正确):

Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return o1.toLowerCase().compareTo(o2.toLowerCase());
        }
    });

查看TreeMapAPI 文档

于 2013-10-08T20:19:25.833 回答
0

您的问题不是很清楚,因为在某些时候您似乎提到了仅使用一个元素(您的地图)对列表进行排序。但我假设您想对该地图中的键进行排序(在地图内或将它们全部添加到某个列表之后)。

但是,对于排序列表,您Collections.sort()可以依赖自然顺序(如果元素实现Comparable)或自定义Comparator. 此外,如果您想在添加/删除元素时保持顺序,您可以查看SortedSet(和实现)。TreeSet

为了维护带有有序键的映射,您拥有SortMap(具有显着的实现:)TreeMap这将确保它随时保留的顺序 - 您可以随机添加元素,并且每当您迭代时,您都会按顺序获得键。同样,顺序可以是自然顺序(由 提供),或者您可以通过实现接口Comparable.compareTo来提供自定义顺序。Comparator

于 2013-10-08T21:07:12.473 回答