如何使用lambda将Map <string,string>转换为“key1:value1,key2:value2,..”</string,string>

时间:2014-07-14 19:43:25

标签: java map lambda java-8

我有Map<String,String>,我需要将其转换为单String"key1:value1,key2:value2,..."

我可以使用迭代来做到这一点。但是我可以使用java 8的新lambda和流功能吗?谢谢!

2 个答案:

答案 0 :(得分:10)

您可以使用地图和加入收集器

Map<String,String> map = new LinkedHashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
String text = map.entrySet().stream()
                 .map(e -> e.getKey() + ":" + e.getValue())
                 .collect(Collectors.joining(","));
System.out.println(text);

打印

key1:value1,key2:value2,key3:value3

BTW我不会使用String.format()如果可以避免它,因为它可能比字符串连接慢得多。

答案 1 :(得分:7)

Map<String, String> map = ...;
String result = map.entrySet().stream()
    .map(e -> String.join(":", e.getKey(), e.getValue()))
    .collect(Collectors.joining(","));