Java 从groovy列表中删除特定值
我的代码片段如下所示,我想在条件检查的else部分忽略/删除列表中的值。 报价记录。删除(tariffOffer)似乎不起作用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
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返回过滤结果的条件过滤列表,不会影响集合本身