繁体   English   中英

然后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())));

util的签名如下:

Stat convertElementToStat(Element element);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM