Java 从groovy列表中删除特定值

Java 从groovy列表中删除特定值,java,groovy,Java,Groovy,我的代码片段如下所示,我想在条件检查的else部分忽略/删除列表中的值。 报价记录。删除(tariffOffer)似乎不起作用 offerRecords.each { tariffOffer -> handsetData.each { hs -> if (tariffOffer.HANDSET_BAND.stringValue() == hs.HANDSET_BAND?.stringValue()) { //println 'cond

我的代码片段如下所示,我想在条件检查的else部分忽略/删除列表中的值。 报价记录。删除(tariffOffer)似乎不起作用

offerRecords.each { tariffOffer ->

    handsetData.each { hs ->
        if (tariffOffer.HANDSET_BAND.stringValue() == hs.HANDSET_BAND?.stringValue()) {
            //println 'condition is satisfied and set the handset id ****** '
            handset.add(hs.HANDSET_PKEY_ID?.stringValue())
        }

        if (handset.size() > 0) {
            // need to call a method
            recHandset = applyHandsetRulesCHL(tariffOffer, handset)
        }
        else {
            // ignore/remove the tariffOffer
            offerRecords.remove(tariffOffer) // i know it doesn't serve the purpose
        }

只需在处理前筛选您的列表:

def filteredList = handsetData.findAll{handset.size() > 0}

并对过滤结果进行处理。顺便说一句,我不明白每个{}主体中的
手机是什么,但我想你已经明白了。

这是典型的java并发修改

i、 你不能在迭代列表时修改它

除了Cat先生先前提出的在迭代之前过滤数据的建议外,还有许多解决方案取决于用例的其他因素,请参阅

一个例子是保留无效条目的并行列表,然后在迭代完成后将其从原始列表中删除:

def listToTest = ['a', 1, 'b', 'c']

def invalidItems = []
listToTest.each {
    if (it == 1)
        invalidItems << it
}

listToTest.removeAll invalidItems

assert ['a', 'b', 'c'] == listToTest
def listToTest=['a',1',b',c']
def无效项=[]
列表测试每个{
如果(it==1)

无效项什么是
手机
?你能想出一些我们可以运行的代码来显示问题吗?我怀疑你想要一个
findAll
def手机=[],手持设备是一个列表,因为我的代码片段是我整个程序的一小部分,我很难给出一个可以独立运行的示例。FindAll似乎不会根据hmmmfindAll返回过滤结果的条件过滤列表,不会影响集合本身