我有一张 map 列表。我无法预测每张 map 的关键。键可以是任意两位数字,该数字将根据请求而变化。但是值包含从请求到请求的唯一值。现在我需要根据每个键的值对这个映射列表进行排序。我已经尝试过类似的方法,
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"));
}
});
由于“key”可能因 map 而异,似乎我无法使用上面的代码。 我也尝试过这些例子。
How to Sort a List of Maps by two Categories?
Sorting list of maps based on a value
由于我无法预测 key ,因此我无法从这些帖子中找到答案。有人可以帮忙吗?
最佳答案
假设每个 map 元素仅包含一个条目,下面的示例应该可以工作:
List<Map<String, String>> list = new ArrayList<>();
//Add entries
Collections.sort(list, new Comparator<Map<String, String>>() {
public int compare(Map<String, String> o1, Map<String, String> o2) {
Collection<String> values1 = o1.values();
Collection<String> values2 = o2.values();
if(!values1.isEmpty() && !values2.isEmpty()){
return values1.iterator().next().compareTo(values2.iterator().next());
}else{
return 0;
}
}
});
关于java - 在java中按值对 map 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36267050/