【问题标题】:How to convert list to Map of Map如何将列表转换为地图地图
【发布时间】:2022-01-01 18:42:04
【问题描述】:

我有这样的代码:

class MyObject{
    String division;
    String subDivision;
    Integer size;

    public MyObject(String division, String subDivision, Integer size) {
        this.division = division;
        this.subDivision = subDivision;
        this.size = size;
}

List<MyObject> list = Arrays.asList(new MyObject("A", "AA", 4),
        new MyObject("A", "AB", 2),
        new MyObject("A", "AC", 3),
        new MyObject("B", "BA", 11),
        new MyObject("B", "BB", 7),
        new MyObject("C", "CA", 8));
Map<String, Map<String,Integer>> map
    = list.stream().collect(Collectors.toMap(MyObject::getDivision), ...);

你能帮我完成代码库吗?

【问题讨论】:

  • 您可能希望使用groupingBy 而不是toMap

标签: java collections java-stream


【解决方案1】:

您可以使用groupingBy,它带有一个分类器和一个下游收集器。分类器用于根据division创建外层图,然后使用下游收集器(toMap)生成内层图:

list.stream()
    .collect(Collectors.groupingBy(MyObject::getDivision,
                                   Collectors.toMap(MyObject::getSubDivision, MyObject::getSize)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多