如何检查Map中存储的值是否为数组并获取该数组的首个元素
代码调整方案
修改后代码如下:
val map : MutableMap<String, Any>? = document.data?.toSortedMap(compareBy<String> { it.length }.thenBy { it }) map?.forEach { (key, value) -> // 校验是否为通用对象数组 if (value is Array<*>) { if (value.isNotEmpty()) { val firstItem = value.first() Log.d("test", "键$key 对应数组的首个元素为:$firstItem") } else { Log.d("test", "键$key 对应数组为空,无有效首元素") } } // 若存储中存在IntArray、LongArray等基本类型数组,可参照下方示例补充对应判断逻辑 else if (value is IntArray) { if (value.isNotEmpty()) { val firstItem = value.first() Log.d("test", "键$key 对应Int数组的首个元素为:$firstItem") } } }
实现逻辑说明:
- 遍历Map时解构出键、值两个变量,方便后续处理
- 使用Kotlin
is关键字做类型校验,判断值是否为数组类型 - 取首元素前先判断数组非空,避免出现下标越界异常
内容的提问来源于stack exchange,提问作者txshiro
相关产品推荐
相关产品推荐

