嗨,这是一个奇怪的问题......
我们先来简单描述一下代码:
我有一个 HashMap ,其中填充了 <PlayerUUID, KingdomUUID>
其中playerUUID是 HashMap 中的键(显然)
现在,对于我的捕获处理系统,我需要确定有多少个不同值,从而确定哪个值最多。
例如: 3名玩家正在攻击一个点,2名玩家在ORION王国,1名玩家在Erion。 我需要检查 HashMap 的值,看看哪个王国的攻击者最多。 (猎户座就是答案)
问候, 托马斯
如果不问的话,我希望这个描述足够好!
最佳答案
你可以做 f1sh 所做的事情。但是,Java 8 添加了流和 lambda,您也可以使用它们。生成的代码更加紧凑、更具可读性并且不易出错。这段代码会慢一些,但是除非您处理很多值,否则您可能根本感觉不到它。
public KingdomUUID getMax(HashMap<PlayerUUID, KingdomUUID> inputMap) {
return inputMap.entrySet()
.stream()
.max((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1)
.get()
.getValue();
}
更多关于Java 8 streams.
更多关于Java 8 lambdas.
关于Java HashMap 获取值(哪个值最多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981124/