gpt4 book ai didi

Groovy 在迭代时删除集合项

转载 作者:行者123 更新时间:2023-12-02 11:00:44 25 4
gpt4 key购买 nike

是否有一种 Groovy 方法可以在迭代时删除 Collection 的项目?在 Java 中,这是使用 Iterator.remove() 完成的:

Collection collection = ...
for (Iterator it=collection.iterator(); it.hasNext(); ) {
Object obj = it.next();
if (should remove) {
it.remove();
}
}

Groovy 是否在其语言语法中提供了迭代时删除,或者我是否必须使用 Iterator.remove()

最佳答案

Use removeAll() .

> c = [1, 2, 3, 4, 5]
> c.removeAll { it % 2 == 0 }
> println c
[1, 3, 5]

您具体询问“迭代时”,您是否尝试对每个对象执行某些操作?只要闭包的最后一个语句仍然为真/假(和以前一样),removeAll 仍然有效:

> c.removeAll { 
* tmp = it * 10
* println "ohai ${it}*10=${tmp}"
* tmp >= 40
* }
ohai 1*10=10
ohai 2*20=20
ohai 3*30=30
ohai 4*40=40
ohai 5*50=50
> println c
[1, 2, 3]

闭包的返回值(最后一个语句的值,或显式的返回值)是真/假,它将用于确定应该删除什么。它不需要显式引用每个对象。

关于Groovy 在迭代时删除集合项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8808487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com