我正在创建一个扑克排名求解器,我必须在一组纸牌中计算具有相同花色或相同排名的纸牌。HashMap
如果集合中有多个等级,我在这里创建并增加值。
private boolean isFourOfAKind() {
Map<RANK, Integer> rankDuplicates = new HashMap<>();
for(Card card : cards) {
rankDuplicates.put(card.getRank(), rankDuplicates.getOrDefault(card.getRank(), 0) + 1);
}
return rankDuplicates.containsValue(4);
}
我想知道使用流与Java流做完全相同的事情是否可能。它看起来像这样:
private boolean isFourOfAKind() {
Map<RANK, Integer> rankDuplicates = cards.stream()
.map(Card::getRank)
.collect(Collectors.toMap(/*...something goes here..*/)); // of course this is very wrong, but you can see what I'm aiming at.
return rankDuplicates.containsValue(4);
}
看起来您正在寻找类似的东西
return cards.stream()
.collect(Collectors.toMap(Card::getRank, e -> 1, Integer::sum))
// keyMapper, valueMapper, mergeFunction
.containsValue(4);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句