我一直在尝试弄清楚如何使用 java 8 流来创建一个 map ,就像下面的 getCardValueCountMap 方法创建的 map 一样:
public class Hand {
private final List<Card> hand = new ArrayList<>();
.....
public Map<CardValue, Integer> getCardValueCountMap(){
HashMap<CardValue, Integer> cardValueCountMap = new HashMap<>();
for (Card card : hand) {
final CardValue value = card.getValue();
Integer count = cardValueCountMap.get(value);
if (count == null){
cardValueCountMap.put(value, 1);
} else {
cardValueCountMap.put(value, count + 1);
}
}
return cardValueCountMap;
}
....
}
最佳答案
这不使用流,因此并不能真正回答您的问题,但在我看来,最简洁的方法是利用 Map
界面的改进。
HashMap<CardValue, Integer> map = new HashMap<>();
for (Card card : hand)
map.merge(card.getValue(), 1, Integer::sum);
关于java - 使用 java 8 转换数组列表 -> 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554692/