在使用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的描述:

android - 如何在Kotlin中循环Map &lt;String,Array &lt;Any &gt;&gt;?-LMLPHP

如何更正我的代码以使其正常工作?

最佳答案

我认为它可以使用.values.flatten()制作平面列表。

  val tempProd = data.values.flatten().filter {
            it.availableQuantities != 0
        }

09-04 12:45