groovy - 从 groovy 中的列表中获取重复项的更简单方法

标签 groovy

鉴于名单:

list: [
   object1: {
     id: 22,
     name: "Tom"
   },
   object2: {
     id: 12,
     name: "Mary"
   },
   object3: {
     id: 44,
     name: "Tom"
   }
]

除了使用嵌套循环之外,是否还有其他单行代码只能从此列表中获取重复名称?所以返回列表将是 ["Tom"]

最佳答案

另一种方法是将它们与一个计数分组,并找到计数大于 1 的所有那些:

list.name.countBy { it }.findResults { it.value > 1 ? it.key : null }

或者确实如@Daniel 所说:
list.values().name.countBy { it }.findResults { it.value > 1 ? it.key : null }

根据你的结构...

关于groovy - 从 groovy 中的列表中获取重复项的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800506/

相关文章:

java - 一个字符串上有数百个正则表达式

java - 使用 spock 进行单元测试 - 在私有(private)字段上测试交互

grails - Groovy-map:每次需要新实例

java - Groovy - 主要方法放置

java - 正则表达式:删除 Java 中的第二对括号

groovy - 无法在 Groovy 中成功导入类?

java - 如何从 groovy Postbuild 插件访问 Jenkins 构建 Artifact ?

testing - 为什么 element.text() != element.@text?

groovy - GroovyFX应用程序与Gradle一起运行

groovy - gradle 属性文件 - 放置新属性后如何保留评论?