Groovy:从列表中删除和对象本身?

Dax*_*xon 2 arrays groovy list

当我发现特定对象隐私对当前用户来说是隐私时,我正试图从列表中删除对象

     books.eachWithIndex{ obj, i ->

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

          def status = bookService.getBookStatus(obj.book)

          if(!status){
               books.remove(i)
          }
        }
     }
Run Code Online (Sandbox Code Playgroud)

尝试删除对象时抛出错误

ERROR errors.GrailsExceptionResolver - null java.util.ConcurrentModificationException

问:有没有办法从列表中删除对象本身,还是必须单独存储索引值并从每个循环外部删除对象?

Pet*_*ser 7

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

def publicBooks = books.findAll { obj ->
    !obj.book.isPrivate() || bookService.getBookStatus(obj.book) 
} 
Run Code Online (Sandbox Code Playgroud)

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