Kotlin中向HashMap存入字符串数组时出现异常显示问题
你的代码存在两个核心问题,解决方法如下:
问题一:使用了不可变Map,元素根本没存入
mapOf()创建的是只读不可变Map,不支持添加或修改元素。你写的map["key"] to array只是生成了一个Pair对象,完全没有把数据放进Map里。
解决:改用mutableMapOf()创建可变Map,然后用map["key"] = array或者map.put("key", array)完成赋值。问题二:数组默认toString()输出内存地址
就算元素正确存入Map,直接打印数组时,因为Kotlin/Java的数组没有重写toString()方法,默认会输出[Ljava.lang.String;@xxxx这种内存地址格式。
解决:打印数组时调用它的contentToString()扩展方法(Kotlin专属),或者用Java的Arrays.toString()工具方法,就能输出[sport]这种正常的数组内容。
修正后的完整代码示例:
fun main() { // 创建可变Map val map = mutableMapOf<String, Array<String>>() val list = listOf("sport") val array = list.toTypedArray() // 正确添加元素到Map map["key"] = array // 正确打印数组内容 println(map["key"]?.contentToString()) // 输出: [sport] }
内容的提问来源于stack exchange,提问作者Денис Попков
相关产品推荐
相关产品推荐

