【发布时间】:2016-03-28 17:04:42
【问题描述】:
我有一张地图列表。我无法预测每张地图的关键。键可以是任意两位数字,它将根据请求而改变。但是值包含从请求到请求的唯一值。现在我需要根据每个键的值对这个映射列表进行排序。我已经尝试过类似下面的方法,
List<Map<String,String>> listOfMaps = new ArrayList<>();
Map<String,String> map1 = new HashMap<>();
Map<String,String> map2 = new HashMap<>();
map1.put("key1","value1");
map2.put("key2","value1");
listOfMaps.add(map1);
listOfMaps.add(map2);
sort(listOfMaps);
Collections.sort(listOfMaps, new Comparator<Map<String, String>>() {
public int compare(final Map<String, String> o1, final Map<String, String> o2) {
return o1.get("key").compareTo(o2.get("key"));
}
});
由于“键”可能因地图而异,我似乎无法使用上面的代码。 我也试过这些例子。
How to Sort a List of Maps by two Categories?
Sorting list of maps based on a value
由于我无法预测关键,我无法从这些帖子中找到答案。有人可以帮忙吗?
【问题讨论】:
-
您的所有地图都只包含一个条目吗?
-
我不太明白 - 也许您可以添加一个测试用例来演示示例输入以及您期望的输出?
-
那么您是对所有地图中的键还是值进行排序?而且,您是否对列表中的所有地图进行了排序?
-
@Paul Boddington 是的,只正确一个键和一个值
-
@ pczeus 我正在尝试对值进行排序。是的,列表中的所有地图
标签: java sorting collections comparator