在 Java 映射中查找与最大值关联的键

新手上路,请多包涵

获取与地图中最大值关联的键的最简单方法是什么?

我相信 Collections.max(someMap) 会返回最大键,当你想要对应于最大值的键时。

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

阅读 599
2 个回答

基本上,您需要遍历地图的条目集,同时记住“当前已知的最大值”和与之关联的键。 (或者只是包含两者的条目,当然。)

例如:

 Map.Entry<Foo, Bar> maxEntry = null;

for (Map.Entry<Foo, Bar> entry : map.entrySet())
{
    if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0)
    {
        maxEntry = entry;
    }
}

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

为了完整起见,这是一种 java-8 的实现方式

countMap.entrySet().stream().max((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1).get().getKey();

或者

Collections.max(countMap.entrySet(), (entry1, entry2) -> entry1.getValue() - entry2.getValue()).getKey();

或者

Collections.max(countMap.entrySet(), Comparator.comparingInt(Map.Entry::getValue)).getKey();

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

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