Groovy:检测列表中重复、不连续值的最简单方法

标签 groovy

我知道在 Groovy 中, 如果

list = [1,2,3,1]

什么时候

list.unique()

带返回

[1,2,3]

但是如果我想检测列表中重复的、不连续的项目的重复值。我怎样才能做到这一点?

detect([1,2,3,1]) => true
detect([1,2,3,2]) => true
detect([1,1,2,3]) => false
detect([1,2,2,3,3]) => false
detect([1,2,3,4]) => false

谢谢。

编辑: 添加这两种情况

detect([1,2,2,1]) => true
detect([1,2,1,1]) => true

true 表示发生任何非连续、重复的情况。

最佳答案

这应该可以做到:

List list = ["a", "b", "c", "a", "d", "c", "a"]

list.countBy{it}.grep{it.value > 1}.collect{it.key}

关于Groovy:检测列表中重复、不连续值的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827427/

相关文章:

grails - 有没有办法在 GVM 中设置默认的 Groovy 和 Grails 版本?

java - Grails 或 Play 如何检测更改和热重载类?

java - 如何计算格式为 TimeDuration 的时间差

grails - 除了 Grails 之外,还有轻量级的 Groovy Web 框架吗?

java - 自定义 Gradle 任务类使用哪种语言?

multithreading - 如何保证 GPars 线程池中任务的执行/呈现顺序?

generics - Generic 类型的关闭参数 - 异常

grails - 分页错误-Grails动态脚手架

mongodb - 奇怪的行为-mongoDB GORM

grails - Groovy 和 final 属性如何用 Map 设置?