Groovy - 如何根据元素的内容从列表中删除元素?

时间:2013-10-09 18:41:16

标签: list groovy element removeall

我正在为Jira开发一个groovy脚本 - 我正在收集一个问题的评论列表,并存储最后一条评论的用户名。

示例:

import com.atlassian.jira.component.ComponentAccessor
def commentManager = ComponentAccessor.getCommentManager()
def comments = commentManager.getComments(issue)
if (comments) {
comments.last().authorUser
}

有时候,我不想存储用户名(如果它属于预定义的角色)。基本上,我想首先检查注释,并从我的列表中删除符合我的条件的任何注释,然后通过调用last()。authorUser结束。类似的东西:

comments.each {
if (it.authorUser.toString().contains(user.toString())) {    
// Here is where I'd want to remove the element from the list**
}
}
comments.last().authorUser  // then store the last element as my most recent comment. 

有意义吗?我是Groovy的新手 - 所以我完全怀疑是一堆令人头疼的问题。我遇到的大多数例子都是处理数字检查......有点难过。

2 个答案:

答案 0 :(得分:3)

您可以使用Collection.removeAll():它通过删除与传递的闭包条件匹配的元素来修改集合。

comments.removeAll {
    it.authorUser.toString().contains(user.toString())
}
comments.last().authorUser

答案 1 :(得分:0)

如今,人们可以使用Java的removeIf { it -> it.isNotDog() }。请参见SO上的一些示例。