Intereting Posts
DataBinding не может использоваться в BaseActivity, где я код в Kotlin Настроить двоичный XML-файл исключения на Windows Каков правильный способ построить класс в Котлине? Исключено исключение Kotlin coroutine Одинаковая конечная точка отдыха с различными PathVariable NullPointerException для android.support.v4.app.NotificationCompatBase $ Action.getIcon () Объявление пустых коллекций в Котлине Выразить «супер» дженерики в функциональных типах Котлина? Firebase-firestore не может использовать два документа Как я могу подавить непроверенные предупреждения о броске? Kotlin: BiFunction с нулевым возвращаемым значением не скомпилируется Ошибка встроенной функции компилятора Kotlin, не совсем уверенная, что происходит Соглашение о кодировании для пустых функций, которые необходимо переопределить в Котлине Как вызвать функцию в kotlin с сырыми типами DexFile не содержит сгенерированных классов после добавления конфигурации Kotlin на Android 4.4

конвертировать андроид hashmap в kotlin

У меня есть Java HashMap заполненный как

 HashMap<String, Integer> myMMap = new HashMap<String, Integer>(); for (int i = 0; i < objects.size(); ++i) { myMap.put(objects.get(i), i); } 

И я пытаюсь преобразовать это в Котлин. Я пробовал путь ниже, но я получаю нулевое значение.

 var myMap : HashMap<String, Int>? = null for (i in objects){ //myMap?.put(i, objects.indexOf(i)) myMap?.put("sample", 3) System.out.println("myMapInForLoop" + myMap) } 

Он печатает I/System.out: myMapInForLoopnull .

Я пробовал использовать функцию hashMapOf , но он допускает только 1 значение, поэтому я не могу поместить это в myMap .

Solutions Collecting From Web of "конвертировать андроид hashmap в kotlin"

Вы можете создать экземпляр HashMap напрямую. Вместо for-loop вы могли бы затем использовать forEachIndexed например (если objects являются Array или Iterable ).

 val myMap = HashMap<String, Int>() objects.forEachIndexed { index, item -> myMap.put(item, index) System.out.println("myMapInForLoop" + myMap) } 

В вашей версии кода вы получаете null , потому что вы назначаете его myMap . Кроме того, у вас может быть только одно значение, потому что вы устанавливаете только "sample" для тестирования.

Вам нужно использовать val myMap = mutableMapOf<String, Int>() если вы хотите мутировать карту в цикле.

Поздно к вечеринке, но вы также можете использовать

 val myMap = objects.withIndex().associateTo(HashMap<String, Int>()) { it.value to it.index } 

Вы должны инициализировать свою myMap .

 val list = listOf("hello", "world", "kotlin", "sfyc23") val myMap = HashMap<String, Int>() for (i in list.indices) { myMap.put(list[i], i) } println(myMap)