android - 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()
}
}
解决方案
为您的概念使用这样的列表过滤功能
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)
推荐阅读
- python - 安装 anaconda 后未找到 Python 模块
- django - 如何在python中访问列表列表
- java - Java中的处理表达式字符串[toLower,toUpper和concat]
- php - Laravel 模型 where 函数
- python - 如何使用 html 中的已知文本考虑前面的元素?
- excel - 是否有一个 Excel 数组公式可以根据常数计算不同值的频率并返回具有最大频率的值?
- kubernetes - Apache 气流中的 Kubernetes Executor:Pod 被立即删除并出现错误
- ruby-on-rails - 在 Ruby on Rails 中,“Message”类存储在哪里?
- sparql - SPARQL 让所有属性在本地 wikidata 中不起作用
- ios - 如何从时间选择器中选择的时间中减去十分钟?