获取键/值如下: view-6ren">
gpt4 book ai didi

java - 如何将字符串拆分为映射,使用流按重复键对值进行分组?

转载 作者:行者123 更新时间:2023-12-05 08:30:09 24 4
gpt4 key购买 nike

我要转换以下内容

String flString="view1:filedname11,view1:filedname12,view2:fieldname21";

Map<String,Set<String>>获取键/值如下:

view1=[filedname11,filedname12]
view2=[fieldname21]

我想使用 Java 8 流。我试过了

Arrays.stream(tokens)
.map(a -> a.split(":"))
.collect(Collectors.groupingBy(
a -> a[0], Collectors.toList()));

但是键也被添加到值列表中。

最佳答案

您应该使用 Collectors::mapping 将数组映射到元素。

String flString = "view1:filedname11,view1:filedname12,view2:fieldname21";

Map<String, List<String>> map = Pattern.compile(",")
.splitAsStream(flString)
.map(a -> a.split(":"))
.collect(
Collectors.groupingBy(a -> a[0],
Collectors.mapping(a -> a[1], Collectors.toList())
)
);

map.entrySet().forEach(System.out::println);

输出

view1=[filedname11, filedname12]
view2=[fieldname21]

关于java - 如何将字符串拆分为映射,使用流按重复键对值进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66055002/

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