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

我想转换以下内容

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);


以上是如何将字符串拆分为映射,使用流按重复键对值进行分组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>