如何将字符串拆分为映射,使用流按重复键对值进行分组?
我想转换以下内容
String flString="view1:filedname11,view1:filedname12,view2:fieldname21";
到 aMap<String,Set<String>>获取键/值如下:
view1=[filedname11,filedname12]
view2=[fieldname21]
view1=[filedname11,filedname12]
view2=[fieldname21]
我想使用 Java 8 流。我试过
然而,键也被添加到值列表中。
回答
您应该使用 aCollectors::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);
输出
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);