Red*_*ddy 4 java lambda java-8 java-stream
我正在努力调整Lambda的功能,但是在这里和那里很少有挣扎.
List<Map<String, String>> list = new LinkedList<>();
Map<String, String> map = new HashMap<>();
map.put("data1", "12345");
map.put("data2", "45678");
list.add(map);
Run Code Online (Sandbox Code Playgroud)
我只想以逗号分隔格式打印值 12345,45678
所以这是我的审判
list.stream().map(Map::values).collect(Collectors.toList()) //Collectors.joining(",")
Run Code Online (Sandbox Code Playgroud)
而输出是[[12345,45678]].这意味着,有一个列表和内部列表,它在0索引处创建逗号分隔值.我明白为什么会这样做.
但是我没有通过如何提取我想要的结果,除非我.get(0)在表达式的末尾调用.
任何有关如何更好地使用lambdas的帮助/更多见解将会有所帮助
试试这个 :
list.stream().map(Map::values).flatMap(Collection::stream).collect(Collectors.joining(","))
Run Code Online (Sandbox Code Playgroud)
该flatMap方法将a扁平Collection<Stream<String>>化为单个Stream<String>.
或者,您可以尝试@Holger在评论中建议的内容.
请注意,由于您使用的是a Map,因此无法保证订单会被保留.您可能会45678,12345在最后看到输出.如果您希望保留订单,可以使用a LinkedHashMap而不是a HashMap.
| 归档时间: |
|
| 查看次数: |
1020 次 |
| 最近记录: |