Functional programming 在Java8中将列表转换为映射

Functional programming 在Java8中将列表转换为映射,functional-programming,java-8,guava,multimap,collectors,Functional Programming,Java 8,Guava,Multimap,Collectors,我正在加载一个日志文件作为输入流,需要对每一行上的匹配值进行聚合处理,还需要在MultiMap中保存行的同时存储重复项,我发现很难将以下流作为MultiMap try(Stream=Files.line(path.get(inFileName))){ 列表匹配值=流 .flatMap->multipatternsprimitor.matches(s,p1)) .map(r->r.group(1)) .collect(Collectors.toList()); matchedValues.forE

我正在加载一个日志文件作为输入流,需要对每一行上的匹配值进行聚合处理,还需要在MultiMap中保存行的同时存储重复项,我发现很难将以下流作为
MultiMap

try(Stream=Files.line(path.get(inFileName))){
列表匹配值=流
.flatMap->multipatternsprimitor.matches(s,p1))
.map(r->r.group(1))
.collect(Collectors.toList());
matchedValues.forEach(System.out::println);
}

如何将其转换为在映射中存储具有重复值的值。

很难说您真正想要的是什么,但是如果您说您需要将“log line as
”存储为“
Map是否希望组1作为键,所有组作为值?是的,模式匹配并从日志行获取值,我需要存储Map您不想要
Multimap
列表
?我不明白为什么每个键需要多个列表。在我的映射中,我需要存储3个值,其中1个值也是一个键,关于我的上述注释的更多信息。映射是否也可以工作,那么您可以使用标准Java(外部列表在同一时间戳中提供多个事件)
try (Stream<String> stream = Files.lines(Paths.get(inFileName))) {
    List<String> matchedValues = stream
                    .flatMap(s -> MultiPatternSpliterator.matches(s, p1))
                    .map(r -> r.group(1))
                    .collect(Collectors.toList());

    matchedValues.forEach(System.out::println);
}
        Map<String, List<String>> matchedValues = stream
                .flatMap(MultiPatternSpliterator::matches)
                .map(r -> Arrays.asList(r.group(1), r.group(2), r.group(3)))
                .collect(Collectors.toMap(
                        groups -> groups.get(0),
                        Function.identity()));
        ListMultimap<String, List<String>> matchedValues = stream
                .flatMap(MultiPatternSpliterator::matches)
                .map(r -> Arrays.asList(r.group(1), r.group(2), r.group(3)))
                .collect(toImmutableListMultimap(
                        groups -> groups.get(0),
                        Function.identity()));