java - 如何使用 Java Streams 为 HashMap 的多个键插入相同的值

标签 java java-8 hashmap java-stream

假设我有一个 HashMap 并且我想将相同的值插入到键列表中。如何在不遍历所有键并插入值的情况下使用 Java 8 执行此操作?这更像是一个 Java Streams 问题。

这是最直接的方法。这是我编写的示例代码,用于演示我想要实现的目标。

public void foo(List<String> keys, Integer value) {
    Map<String, Integer> myMap = new HashMap<>(); 
    for (String key : keys) {
        myMap.put(key, value);
    }
}

是否有使用 Java 8 流执行上述操作的更简单方法?如何避免使用 Java 8 流的 for 循环。谢谢!

[Edit-1] 下面是一个更好的代码片段。

public void foo() {
    Map<String, Integer> myMap = new HashMap<>(); 
    List<String> keys = getKeysFromAnotherFunction();
    Integer value = getValueToBeInserted(); // Difficult to show my actual use case. Imagine that some value is getting computed which has to be inserted for the keys.
    for (String key : keys) {
        myMap.put(key, value);
    }  

    List<String> keys2 = getNextSetOfKeys();
    Integer newValue = getValueToBeInserted(); 
    for (String key : keys2) {
        myMap.put(key, newValue);
    } 
}

最佳答案

使用收集器,比如:

Map<String, Integer> myMap = keys.stream()
            .collect(Collectors.toMap(key -> key,
                    val -> value, (a, b) -> b));

关于java - 如何使用 Java Streams 为 HashMap 的多个键插入相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815243/

相关文章:

java - 当键/值映射函数具有共同的计算步骤时,将 Stream 转换为 Map

java - Tree实现java中递归函数调用转换为lambda表达式

java - HashMap 在第 12 个索引中插入第一条记录

java - 在运行 Windows 8.1 的 PC 上设置 Android Studio 时,如何手动找到 Java 开发工具包?

c# - 访问 Outlook 的公用文件夹 : Java or C#

java - 常见的If代码else代码java编程实践

java - 如何在java中的hashmap或hashtable中存储字节数组

clojure - 如何通过 Clojure 中 HashMap 上的索引进行随机访问?

java - 无法让jsps在glassfish中实例化java类

java - 我在 Timer 类中找不到 start() 方法