gpt4 book ai didi

java - 连接列表中所有 map 的字符串值

转载 作者:搜寻专家 更新时间:2023-11-01 01:51:10 24 4
gpt4 key购买 nike

我正在尝试调整 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);

我只想以逗号分隔格式打印值,如 12345,45678

我的试炼开始了

list.stream().map(Map::values).collect(Collectors.toList()) //Collectors.joining(",")

输出为 [[12345,45678]]。这意味着,有一个列表和内部列表,它在 0 索引处创建逗号分隔值。不过,我确实理解它为什么会这样。

但是除非我在该表达式的末尾调用 .get(0),否则我没有弄清楚如何提取我想要的结果。

任何关于如何更好地使用 lambda 的帮助/更多见解都会有所帮助

最佳答案

试试这个:

list.stream()    
.map(Map::values)
.flatMap(Collection::stream)
.collect(Collectors.joining(","))

flatMap 方法将 Collection<Stream<String>> 扁平化为单个 Stream<String>

或者,您可以尝试@Holger 在评论中建议的内容。

请注意,由于您使用的是 Map ,因此无法保证订单将被保留。您可能会在最后看到输出为 45678,12345。如果你想保留顺序,你可以使用 LinkedHashMap 而不是 HashMap

关于java - 连接列表中所有 map 的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31056919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com