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

groovy-将一个映射列表组合成一个映射

  •  2
  • Mr_Tree  · 技术社区  · 6 年前

    我有一张地图列表,我正试图把它合并成一张地图。我试过用 map.collectEntries() 这样做,但所创建的地图仅包含列表中的最后一个映射。我的输入列表如下:

    def people = [[name:'John', age:35], [name:'Jim', age:54]]
    

    我想计算一张地图,比如:

    def people = ['John':35, 'Jim':54]
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   Jayan    6 年前

    您必须使用访问名称和年龄的闭包从映射中收集条目

    def people = [[name:'John', age:35], [name:'Jim', age:54], [name:'Smith', age:'53']]
    
    def nameAgeMap=people.collectEntries() {
        [it.name, it.age]
    }
    
    println(nameAgeMap)
    
        2
  •  0
  •   mentallurg    6 年前

    为了简单起见:

    Map<String, String> result = new HashMap<String, String>();
    for (Map<String, String> singleMap : people) {
      result.putAll(singleMap);
    }
    

    流API:

    您可以使用流API做同样的操作,这可能会导致许多开发人员过于复杂。