在 Kotlin 中将地图转换为地图列表

pav*_*163 4 dictionary list kotlin

我正在尝试转换传统地图:

1 -> "YES",
2 -> "NO",
3 -> "YES",
...
Run Code Online (Sandbox Code Playgroud)

具有固定键的地图列表,例如:

[
  <number -> 1,
   answer -> "YES">,
  <number -> 2,
   answer -> "NO">,
  ...
]
Run Code Online (Sandbox Code Playgroud)

现在我有一个看起来不太好的解决方案,并且没有真正利用 Kotlin 的功能特性。我想知道是否有更清晰的解决方案:

fun toListOfMaps(map: Map<Int, String>): List<Map<String, Any>> {
    val listOfMaps = emptyList<Map<String, Any>>().toMutableList()

    for (entry in map) {
        val mapElement = mapOf(
                "number" to entry.component1(),
                "answer" to entry.component2()
        )
        listOfMaps.add(mapElement)
    }

    return listOfMaps
}
Run Code Online (Sandbox Code Playgroud)

hol*_*ava 5

只需使用Map#map就足够了,例如:

fun toListOfMaps(map: Map<Int, String>): List<Map<String, Any>> {
    //               v--- destructuring `Map.Entry` here
    return map.map { (number, answer) -> 
        mapOf("number" to number, "answer" to answer) 
    }
}
Run Code Online (Sandbox Code Playgroud)