2021-08-06 Kotlin の groupBy
Kotlin で List<Pair<String, Int>>
を Map<String,List<Int>>
に変換するときは groupBy
を使うと良さそう。
@Test
fun f() {
val l = listOf("A" to 1, "A" to 2, "B" to 3)
val m1 =
l.fold(mutableMapOf<String, MutableList<Int>>()) { m, (k, v) ->
m.getOrPut(k) { mutableListOf() }.add(v)
m
} as
Map<String, List<Int>>
val m2 = l.groupBy({ (k, _) -> k }, { (_, v) -> v })
val m3 = l.groupBy(Pair<String, Int>::first, Pair<String, Int>::second)
m1 shouldBe mapOf("A" to listOf(1, 2), "B" to listOf(3))
m1 shouldBe m2
m1 shouldBe m3
}
今日のコミット。