代码之家  ›  专栏  ›  技术社区  ›  Majid

如何访问流中的嵌套地图条目项?

  •  4
  • Majid  · 技术社区  · 7 年前

    我有一本书 Map 对象如下:

    Map<String,Map<Integer,Double>> items = getMap();
    

    我有一个班叫 MyClass

    public MyClass(String city, int month, double average){}
    

    现在我想转换 items 类名 如下所示:

    List<MyClass> myList = items.entrySet().stream()
                                           .map(i-> new MyClass(i.getKey(), ?, ?))
                                           .collect(Collectors.toList()); 
    

    但我不知道我应该用什么来代替 ? 访问嵌套的 Integer Double 地图 对象

    2 回复  |  直到 7 年前
        1
  •  7
  •   Michael    7 年前

    因为您有一个嵌套的映射,所以也必须处理内部映射条目。 (假设一个城市有多个月平均对)

    List<MyClass> myList = items.entrySet()
        .stream()
        .flatMap(entry -> entry.getValue().entrySet()
            .stream()
            .map(innerEntry -> new MyClass(entry.getKey(), innerEntry.getKey(), innerEntry.getValue()))
        )
        .collect(Collectors.toList());
    
        2
  •  3
  •   fps    7 年前

    List<MyClass> myList = new ArrayList<>();
    items.forEach((city, innerMap) -> innerMap.forEach(month, average) -> 
                                      myList.add(new MyClass(city, month, average)));