如何在Map 8中将Map <String,List <String >>转换为Map <String,String>

sta*_*unt 5 java java-8 java-stream

map喜欢

key= ["a1", "a2", "a3"] 
value = [["a1.value1", "a1.value2"],["a2.value1", "a2.value2"]]
Run Code Online (Sandbox Code Playgroud)

生成的Map应该是这样的

key = ["a1", "a2", "a3"]
value = ["a1.value1, a1.value2", "a2.value1, a2.value2"]
Run Code Online (Sandbox Code Playgroud)

我们如何Collectors.joining用作中间步骤?

Ous*_* D. 7

我们如何使用Collectors.joining作为中间步骤?

你的意思是,在收集阶段......

是的你可以:

Map<String, String> result = 
        source.entrySet()
              .stream()
              .collect(toMap(Map.Entry::getKey, 
                      e -> e.getValue().stream().collect(joining(", "))));
Run Code Online (Sandbox Code Playgroud)

但是,更好用String.join:

Map<String, String> result = 
     source.entrySet()
           .stream()
           .collect(toMap(Map.Entry::getKey, e -> String.join(", ", e.getValue())));
Run Code Online (Sandbox Code Playgroud)

或者没有流变体:

Map<String, String> resultSet = new HashMap<>();
source.forEach((k, v) -> resultSet.put(k, String.join(",", v)));
Run Code Online (Sandbox Code Playgroud)