java hashmap按值排序
时间: 2023-11-08 11:46:18 浏览: 182
要对Java HashMap按值进行排序,可以使用以下步骤:
1. 首先,将HashMap的键值对转换为List,可以使用以下代码:
```
List<Map.Entry<String, Integer>> infoIds = new ArrayList<>(map.entrySet());
```
这样就将HashMap的键值对保存在了List中。
2. 接下来,使用Collections类的sort方法对List进行排序,可以使用Comparator接口来指定排序规则。以下是一个示例代码:
```
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
```
这里使用了o2.getValue() - o1.getValue()来按值进行降序排序。如果要按升序排序,可以将表达式改为o1.getValue() - o2.getValue()。
3. 排序后,你可以遍历排序后的List,按照需要的格式输出排序后的结果。例如:
```
for (Map.Entry<String, Integer> entry : infoIds) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ": " + value);
}
```
这样就可以按照值的顺序输出HashMap的键值对了。
此外,如果你希望保留排序后的顺序,可以考虑使用LinkedHashMap而不是HashMap。LinkedHashMap会保持插入顺序,所以在进行排序后仍能保持顺序。你可以使用以下代码创建一个LinkedHashMap对象:
```
Map<String, Integer> lmap = new LinkedHashMap<>();
```
然后按照上述步骤对lmap进行排序。
阅读全文