我试过最后几个小时两次修复这个小问题。 我想使用以下方法从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&GT; X [1]));
问题是如果我有重复的密钥,则map会抛出异常。
有没有办法允许重复键并将值存储在列表中?。
答案 0 :(得分:1)
您需要做的就是使用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())));