arrays - Groovy:从其自身的列表中删除和对象?

标签 arrays list groovy

当发现特定对象时,我正在尝试从列表中删除对象 privacy 对当前用户是私有(private)的

     books.eachWithIndex{ obj, i ->

        if((obj.book.private).equals(true)){

          def status = bookService.getBookStatus(obj.book)

          if(!status){
               books.remove(i)
          }
        }
     }

尝试移除对象时抛出错误

错误 errors.GrailsExceptionResolver - null java.util.ConcurrentModificationException

问:有什么方法可以从列表中删除对象本身 或者您是否必须单独存储索引值并从每个循环外部删除对象?

最佳答案

更实用的方法可能会有所帮助:

def publicBooks = books.findAll { obj ->
    !obj.book.isPrivate() || bookService.getBookStatus(obj.book) 
} 

请注意,findAll() 返回一个 集合,而不是修改现有集合。

关于arrays - Groovy:从其自身的列表中删除和对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938431/

相关文章:

json - 消费 org.glassfish.grizzly.utils.BufferInputStream@ Mule

c++ - 比较不同大小的数组

Java - 将用户输入放入数组中

arrays - 返回最大和的子数组

JAVA ANDROID - 获取文件夹的列表文件

groovy - 许可证-gradle-plugin

c - 二维数组中对角线的总和

python - 压缩Python列表中的所有连续的

list - 如何在不多次遍历字符串的情况下跟踪字符串的多个属性?

java - 在groovy中使用snakeyaml序列化hashmap时出现问题