Java 分组依据然后收集到自定义对象列表

Java group by then collect to list of custom objects

我有来自 csv 文件的 Element

public class Element {
    private String site;
    private String value;
    private Date date;
...
}

我想按 site 将元素分组到 Stat 个对象的列表中

public class Stat {
    private List<Info> infos;
    private String site;

    public Stat (String site, List<Info> infos) {
...
    }
}

public class Info {
    private String value;
    private Date date;
...
}

这是我所在的地方

Map<String, List<Element>> elementsBySite = elements.stream().collect(Collectors.groupingBy(Element::getSite));

是否可以将我的 Element 列表重新映射到单个统计信息列表?

类似于

Map<String, List<Stats>> statsBySite = elements
    .stream()
    .collect(Collectors.groupingBy(Element::getSite, 
        Collectors.collectingAndThen(Collectors.toList(), 
             // transform each element to Info
             // then create a Stats object with all infos for a given site
));

使用 Collectors.mapping 作为 groupingBy 的下游,例如:

Map<String, List<Stat>> elementsBySite = elements.stream()
        .collect(Collectors.groupingBy(Element::getSite,
                Collectors.mapping(e -> convertElementToStat(e),
                        Collectors.toList())));

实用程序的签名如下:

Stat convertElementToStat(Element element);