【问题标题】:How to get a reference of the list I am iterating in groovy如何获取我在 groovy 中迭代的列表的引用
【发布时间】:2014-05-29 19:27:30
【问题描述】:

我有一个类似[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
}

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

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

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

List somelist
//...
somelist
.findAll{...}
.intersect{...}
//check for some warnings here
.collect{...}
.unique{...}

如果我能以不同的方式做的话,我想避免将列表分配给变量。

是不是有什么收藏方法从我的眼里溜走了?

【问题讨论】:

    标签: list collections groovy functional-programming duplicates


    【解决方案1】:

    这个怎么样?

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

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2018-01-27
      • 2020-05-21
      • 1970-01-01
      • 2012-06-21
      相关资源
      最近更新 更多