将android hashmap转换为kotlin

use*_*518 3 java android 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);
}
Run Code Online (Sandbox Code Playgroud)

而我正试图将其转换为Kotlin.我尝试了下面的方法,但我得到了空值.

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)
}
Run Code Online (Sandbox Code Playgroud)

它打印I/System.out: myMapInForLoopnull.

我尝试过使用hashMapOf函数,但它只允许1个值,所以我不能把它放进去myMap.

tyn*_*ynn 5

您可以HashMap直接实例化.而不是for循环,您可以使用forEachIndexed例如(如果objectsArrayIterable).

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

在您获得的代码版本中null,因为您将其分配给myMap.此外,您可能只有一个值,因为您只设置了一个"sample"用于测试的密钥.