4 回答
TA贡献1789条经验 获得超10个赞
只需使用stream()
withmin()
即可获得最低值
lowestTrump.values().stream().min(Integer::compareTo);
如果lowestTrump
可以为空,您也可以lowestTrump.values()
用 apache包装CollectionUtils.emptyIfNull())
或使用另一种空安全方法
TA贡献1893条经验 获得超10个赞
您可以像这样一步获得最小玩家:
Player lowestPlayer = lowestTrump.entrySet()
.stream()
.min(Comparator.comparingInt(Map.Entry::getValue))
.map(Map.Entry::getKey)
.orElse(null);
String attackerFound = lowestPlayer != null ? lowestPlayer.getName() : null;
请注意,如果lowestTrump为空,则将attackerFound为null。
TA贡献1824条经验 获得超8个赞
这是我的实际工作代码
Optional<Player> result = lowestTrump.entrySet()
.stream()
.filter(c -> c.getValue() != -1)
.min(Comparator.comparingInt(Map.Entry::getValue))
.map(Map.Entry::getKey);
if(result != null && result.get().getSuitInHand() != -1) {
System.out.println("Player : " + result.get().getName() + " is the first attacker");
}
TA贡献2016条经验 获得超9个赞
您可以使用树状图。这样,当您向该映射添加任何值时,它就已经被排序了。您可以获得第一个值,这将是最低或明智的 Versa。
Map <Player, Integer> playerMap = new TreeMap<Player, Integer>();
对于 Java 8+,您可以使用以下示例:
playerMap.values().stream().min(Integer::compareTo);
就是这样。
添加回答
举报