groovy - 如何使用 groupby 在 Groovy 中为 map 值选择对象字段

标签 groovy

我有一个包含具有 getName() 和 getYearOfBirth() 方法的 Person 对象的人员列表。我正在使用 groupBy 对 Person 对象进行分组。我正在使用 groupBy 对 Person 对象进行分组,但我只想将名称放入映射中,因为 Person 将来会有很多附加字段。岁月将是 key 。

    class Person {
        String name
        int yearOfBirth
    }       

    def people = [ 
        new Person(name:"Tom", yearOfBirth:1985),
        new Person(name:"Abigail", yearOfBirth:1987),
        new Person(name:"Joyce", yearOfBirth:1984),
        new Person(name:"James", yearOfBirth:1987),
        new Person(name:"Scott", yearOfBirth:1985),
        new Person(name:"Ruth", yearOfBirth:1984)
    ]           

    //people.groupBy(_.year) mapValues (_ map (_.name))  how to map here?

这是 Scala app 的直接端口

最佳答案

一种解决方案是:

def nameInYear = people.groupBy { it.yearOfBirth }
                       .collectEntries { [ (it.key):it.value.name ] }
assert nameInYear[ 1984 ] == [ 'Joyce', 'Ruth' ]

因此,按出生年份对他们进行分组,以获得 YEAR->ListOfPeople map 然后,对于每个分组,收集 YEAR->ListOfNames

的 map

关于groovy - 如何使用 groupby 在 Groovy 中为 map 值选择对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177050/

相关文章:

grails - 时髦的, chalice : high level questions on extraneous properties and command objects/data binding

jenkins - 非法参数异常 : Expected named arguments (Jenkins)

java - 无法解析类 com.cloudbees.hudson.plugins.folder.Folder

grails - 在 Groovy 中轻松设置和获取对象结构之间的数据

groovy - 使用Jenkins http-request-plugin进行基本身份验证

scala - Mirah 比 JRuby、Groovy 和 Scala 提供了什么?

grails - 如何从Windows命令行在Gradle项目中运行Groovy脚本

android - 在 android 中使用 rest api 和解析数据、jackson 或 groovy 的最佳方法是什么?

html - Grails没有方法签名:org.apache.catalina.core.ApplicationHttpRequest.getFile()

java - 如何使用grails中的脚本覆盖所有打印方法的功能