排序链接哈希地图

2022-08-31 20:46:44

我如何根据LinkedHashMap的值对LinkedHashMap进行排序,因为LinkedHashMap包含字符串和整数。因此,我需要根据整数值对其进行排序。多谢


答案 1
List<Map.Entry<String, Integer>> entries =
  new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
  public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b){
    return a.getValue().compareTo(b.getValue());
  }
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
  sortedMap.put(entry.getKey(), entry.getValue());
}

答案 2

现在,使用Java 8流,这要容易得多:您不需要中间映射来排序:

map.entrySet().stream()
    .sorted(Map.Entry.comparingByValue())
    .forEach(entry -> ... );

推荐