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
。如何使用密钥amt
进行排序?
id=1,2,3,4,5
amt=1000,33333,77,9087,5432
答案 0 :(得分: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());
}
});
答案 1 :(得分:0)
你的问题不是很清楚,因为在某些时候你似乎提到只用一个元素(你的地图)排序一个列表。但我假设您想要对该地图中的键进行排序(在地图内部或将它们全部添加到某个列表之后)。
但是,对于排序列表,您Collections.sort()
可以依赖自然顺序(如果元素实现Comparable
)或自定义Comparator
。此外,如果您希望在添加/删除元素时维护订单,则可以查看SortedSet
(以及TreeSet
实现)。
为了维护带有序键的地图,你有SortMap
(有一个值得注意的实现:TreeMap
),这将确保它随时保留的顺序 - 你可以随机添加元素无论何时你迭代你都会按顺序得到钥匙。同样,订单可以是自然订单(由Comparable.compareTo
提供),也可以通过实施Comparator
界面提供自定义订购。