【发布时间】:2020-04-15 10:47:02
【问题描述】:
在我的带有 Kotlin 的 android 应用程序中,我有一个变量“数据”类型的 Map>,哪个产品是一个 kotlin 数据类。
var data: Map<String, Array<Product>>
产品数据类包含 var availableQuantities。 我想循环 Map> 并仅保留可用数量!= 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
}
但是,运行代码后出现异常,如下图:
下图为数据说明:
如何更正我的代码以使其正常运行?
【问题讨论】:
-
您需要结果作为地图还是只是产品列表?
-
我需要一个结果作为地图,我想更新“数据”
-
当您在下面的各种 cmet 中说您的“应用程序被阻止”时,您的意思是它崩溃还是挂起?
-
我将 try catch 添加到我的代码中,我得到以下异常 java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.models.Product[]