Java Lambda表达式:如何从哈希图中连接键和值集?

0 java lambda string-concatenation

我是lambda表达式的新手,目前我坚持要解决的任务(只是为了学习lambda)。

给定是一个映射Map<String, Set<Integer>>,我想遍历将键及其值连接为String的条目集。

该地图可能如下所示:

“ x”,[1,3,5]

“ y”,[2,3]

“ z”,[2,4]

我想以这种String表示形式结束:

“ x:1、3、5; y:2、3; z:2、4”

我什至不知道从哪里开始。可以在Internet上找到的所有示例都只是循环一个列表或具有单个值(而不是一个值)的映射,并且大多数情况下它们都是System.out.println()。我什至不知道如何开始... forEach或流?我想我需要一个(或多个?)收集器可以加入值,但我只是不知道如何实现这一点。一个表达式甚至可能吗?

有人可以给我提示吗?

Dmi*_*ets 5

像这样

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("; "));
Run Code Online (Sandbox Code Playgroud)