我有以下字符串:
"id1:name1,id2:name1,id3:name2,id4:name2,id5:name2"
我想将此字符串转换为以下形式的 map :
{name2=[id3, id4, id5], name1=[id1, id2]}
我的要求和这个问题一样:How to split a string into a map with a list of values?但是,如何使用 Java 8 Stream API 做到这一点?
最佳答案
根据您正在寻找流解决方案的标签。这是一个
String text = "id1:name1,id2:name1,id3:name2,id4:name2,id5:name2";
Map<String, List<String>> map = Arrays
.stream(text.split(","))
.map(pair -> pair.split(":"))
.collect(Collectors.groupingBy(
pair -> pair[1],
Collectors.mapping(e -> e[0], Collectors.toList())
)
);
System.out.println(map);
输出:{name2=[id3, id4, id5], name1=[id1, id2]}
关于java - 如何使用 Java 8 Stream 拆分字符串并将所有信息分组到具有重复值的映射中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44344276/