按值对 Map<Key, Value> 进行排序

新手上路,请多包涵

我对 Java 比较陌生,经常发现我需要对值进行排序 Map<Key, Value>

由于这些值不是唯一的,我发现自己将 keySet 转换为 array ,并使用 自定义比较器 通过 数组排序 对该数组进行排序,该比较器对与键关联的值进行排序。

有没有更简单的方法?

原文由 Abe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 638
1 个回答

这是一个通用的友好版本:

 public class MapUtil {
    public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
        List<Entry<K, V>> list = new ArrayList<>(map.entrySet());
        list.sort(Entry.comparingByValue());

        Map<K, V> result = new LinkedHashMap<>();
        for (Entry<K, V> entry : list) {
            result.put(entry.getKey(), entry.getValue());
        }

        return result;
    }
}

原文由 Carter Page 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题