如何获取我在groovy中迭代的列表的引用

val*_*rry 3 collections groovy functional-programming list duplicates

我有一个类似的列表[0, 1, 2, 3, 4, 2, 1],我想为此列表中相等的每个元素元组打印一条警告消息.所以鉴于上面的列表我想做点什么

[0, 1, 2, 3, 4, 2, 1].someMethodIDontKnow { Int num, List owner ->
    if(owner.contains(num)) println "warning, multiple "+ num +" detected"
    println it
}
Run Code Online (Sandbox Code Playgroud)

我当然可以保存列表然后这样做:

List<Int> numlist = [0, 1, 2, 3, 4, 2, 1]
numlist.each {
    if (numList.contains(it)) println "warning, multiple "+ it +" detected"
    println it
}
Run Code Online (Sandbox Code Playgroud)

但这并不像之前的代码那样简洁,特别是当它发生在其他类似的调用中时:

List somelist
//...
somelist
.findAll{...}
.intersect{...}
//check for some warnings here
.collect{...}
.unique{...}
Run Code Online (Sandbox Code Playgroud)

如果我可以采用不同的方式,我想避免将列表分配给变量.

可能有一些收集方法从我眼中滑落?

bdk*_*her 5

这个怎么样?

[0, 1, 2, 3, 4, 2, 1].groupBy().each { k, v -> 
    if (v.size() > 1) {
        println "Warning: multiple $k detected" 
        println k
    }
}
Run Code Online (Sandbox Code Playgroud)