在使用Kotlin的android应用中,我具有Map>的变量“数据”类型,其中Product是kotlin数据类。
var data: Map<String, Array<Product>>
产品数据类包含var availableQuantities。
我想循环Map>并仅保留具有availableQuantities!= 0的产品,并更新数据变量。我该怎么做?
这是我的代码
try {
val filteredMap: HashMap<String, Array<Product>> = HashMap()
data.forEach { (key, value) ->
val filtered = value.filter { prod -> prod.availableQuantities != 0 }
if (filtered.isNotEmpty()) {
filteredMap[key] = filtered.toTypedArray()
}
}
} catch (e: Throwable) {
e.message
}
但是,运行代码后,异常如下图所示:
下图是data的描述:
如何更正我的代码以使其正常工作?
最佳答案
我认为它可以使用.values.flatten()
制作平面列表。
val tempProd = data.values.flatten().filter {
it.availableQuantities != 0
}