2017-07-24 103 views
2

我想傳統的地圖轉換:轉換映射到地圖列表中科特林

1 -> "YES", 
2 -> "NO", 
3 -> "YES", 
... 

到地圖列表與固定鍵像這樣:

[ 
    <number -> 1, 
    answer -> "YES">, 
    <number -> 2, 
    answer -> "NO">, 
    ... 
] 

現在我有一個該解決方案看起來不太好,並沒有真正利用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 
} 

回答

3

只需使用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) 
    } 
}