首页 > 解决方案 > java.util.ConcurrentModificationException 尝试从 android 中的列表中删除项目

问题描述

我有变体列表,其中每个变体都有颜色列表。我想检查每个变体是否有来自过滤器的颜色,如果没有,我想从变体列表中删除该变体。当我尝试删除时出现错误:java.util.ConcurrentModificationException 这是我尝试过的:

list.map { variant ->
    variant.variantColors.map { color ->
        if (color != filterModel.color) {
            list.removeIf { color != filterModel.color }
        }
    }
}

和:

list.map { variant ->
    variant.variantColors.map { color ->
        if (color != filterModel.color) {
            list.removeAll { color != filterModel.color }
        }
    }
}

和:

val iterator = list.iterator()
while (iterator.hasNext()) {
    val item = iterator.next()
    val iteratorSec = item.variantColors.iterator()
    while (iteratorSec.hasNext()) {
        val itema = iteratorSec.next()
        if (itema != filterModel.color)
            iterator.remove()
    }
}

标签: androidkotlin

解决方案


为您的概念使用这样的列表过滤功能

 fun main()
 {
  val myList : MutableList<ColorInfo> = mutableListOf(
    ColorInfo(color = "red",colorcode = "1111"),
    ColorInfo(color = "green",colorcode = "1123"),
    ColorInfo(color = "yellow",colorcode = "1134")
)


val filteredList = myList.filter { !it.color.equals("red") }
println(filteredList.toString())
 //out put is [Event(color=green, colorcode=1123), Event(color=yellow, colorcode=1134)]
}

data class ColorInfo(var color : String,var colorcode : String)

推荐阅读