我在过去的几个小时里尝试了两个修复这个小问题。 我想使用以下方法读取 txt 文件:
Stream<String> stream = Files.lines(Paths.get(fileName))
输入看起来像:
b -> l;
c -> a;
a -> d;
c -> l;
现在我想像这样映射它。
{a,=d, b=l, c=[a,l]}
我尝试使用 java Stream API 来做到这一点:
stream.map(x->x.split(" -> ")).collect(Collectors.toMap(x->x[0],
x->x[1]));
问题是如果我有重复的键,toMap 会抛出异常。
有没有办法允许重复的键并将值存储在列表中?
最佳答案
您需要做的就是使用带有适当映射的 groupingBy 。
Map<String, Set<String>> result = list.stream().map(it -> it.split(" -> ")).
collect(Collectors.groupingBy(t -> t[0],
Collectors.mapping(strings -> strings[1], Collectors.toSet())));
关于java - 如何将字符串数组分组到 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39944733/