2017-02-10 28 views
0

我是lambda表达式的新手,目前我遇到了一个我想解决的任务(只是为了学习lambdas)。Java lambda表达式:如何连接hashmap中的键值和一组值?

鉴于是一张地图Map<String, Set<Integer>>我想迭代条目集连接键和它们的值作为字符串。

地图可能看起来像这样:

“×”,[1,3,5]

“Y”,[2,3]

“Z”,[ 1,2,4]

而且我想这个String表示结束:

“x:1,3,5; y:2,3; Z:2,4"

我甚至不知道从哪里这里开始,可以在互联网上找到所有的例子做要么只是循环列表或单值映射(而不是一组)。而且大部分时间他们所做的只是System.out.println()我甚至不知道如何开始...... forEach或stream?我想我需要一个(或多个)收集器来加入这些值,但我只是不知道如何实现这一目标。在一个表达这甚至可能吗?

有人可以给我一个提示?

回答

4

像这样

Map<String, Set<Integer>> map = new HashMap<>(); 
// fill map here 
String result = map.entrySet().stream() 
     .map(x -> x.getKey() + ": " + x.getValue().stream() 
       .map(Object::toString) 
       .collect(Collectors.joining(", "))) 
     .collect(Collectors.joining("; ")); 
+0

谢谢!这正是我所期待的。 – oldzitterhand