java - 如何在 Java 8 中将流转换为 HashMap(而非 Map)

标签 java java-8 hashmap java-stream

我有一个流,我想明确地将它收集到一个 HashMap 中。现在,我正在做类似的事情

List<Item> listToTransform = //initialized and populated
HashMap<K, V> myHashMap = new HashMap<>();
listToTransform.stream().map(/* do my transformation here */)
.forEach(i -> myHashMap.put(i.getKey(), i.getValue()));

我想知道是否有一种方法可以使用 Collectors 显式取回 HashMap。

最佳答案

Collectors.toMap 方法的重载之一将允许您选择您选择的 map 实现。

不幸的是,这种重载的缺点之一是它还需要一种方法来合并具有相同键的两个值(尽管我经常引用在这种情况下总是抛出异常的方法)。

HashMap<K, V> myHashMap = listToTransform.stream().map(/* do my transformation here */)
.collect(Item::getKey, Item::getValue, this::throwIllegalArgumentException, HashMap::new);

关于java - 如何在 Java 8 中将流转换为 HashMap(而非 Map),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814537/

相关文章:

java :Why the Local variable should be declared final

java - 如何更改闭源类以操纵其中的方法

Eclipse 调用层次结构 lambda

java - 使用嵌套的 HashMap 是一种不好的做法吗?

java - java 中动态多选项 groupby 的复杂 hashmap 数据结构 - 改进在任意数据上运行 groupbys 的实现的想法

java - 尝试在 if 语句中制作动画

java - 连接到远程 Amazon RDS mysql 实例的桌面应用程序

Java 8 : grouping field values by field names

java - 使用 Optional.ofNullable 替代三元运算符是一种好习惯吗?

java - 如何在 Java HashMap 中放入多个字符串值