java - 使用 java 8 转换数组列表 -> 映射

标签 java java-8

我一直在尝试弄清楚如何使用 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/

相关文章:

Java 8 : Kill/Stop a thread after certain period of time

java - 查明 Java 8 流过滤器是否已过滤某些内容的优雅方法

java - 如何根据子对象字段获取父对象

java - 字节 -> 原始不一致,尝试创建缓冲区

java - Clojure,Java interop : how to get File. 分隔符?

java - 将Latest 与已完成的Observable 结合起来

java - 您可以将一个对象转换为实现接口(interface)的对象吗? (JAVA)

java - 尝试读取 json Assets 时出现 FileNotFoundException

java - 流,检查两个对象列表是否具有相同的另一个对象的嵌套列表

java - 如何在必要时使用流 JAVA 8 修改某些值来合并两个 POJOS 列表