nestedDictionary["First Layer"]
может возвращать не null
значение.Таким образом, вы не можете связать nestedDictionary["First Layer"]["Second Layer"]
, поскольку это означает, что значение, хранящееся в nestedDictionary["First Layer"]
, существует.
Вы можете использовать оператор not null assertion для принудительного выполнения кода.Однако вы получите KoltinNullPointerException
, если значение в nestedDictionary["First Layer"]
не было инициализировано ранее.
val nestedDictionary = mutableMapOf<String, MutableMap<String, List<String>>>()
nestedDictionary["First Layer"]!!["Second Layer"] = mutableListOf("possible to write")
Результат
Exception in thread "main" kotlin.KotlinNullPointerException
at main(Main.kt:4)
это работает, потому что карта между ними инициализирована
val nestedDictionary = mutableMapOf<String, MutableMap<String, List<String>>>()
nestedDictionary["First Layer"] = HashMap()
nestedDictionary["First Layer"]!!["Second Layer"] = mutableListOf("possible to insert")
Более чистое решение будет
val nestedDictionary = mutableMapOf<String, MutableMap<String, MutableList<String>>>()
nestedDictionary["First Layer"] = mutableMapOf("Second Layer" to mutableListOf("inserted"))