当メモは2019-12-07に投稿されたものを加筆修正し、再掲したものです。
目次
zipメソッド
Kotlinでzip
はどうやるのかな?と思って調べた内容です。
いろいろありそうだけど、とりあえずシンプルなものをメモしておきます。
Kotlinにはそのものズバリのzip
というメソッドがList
やArray
に用意されています。
listをzip
val list1 = listOf("A", "B", "C") val list2 = listOf(100, 200, 300) println(list1.zip(list2))
出力結果
[(A, 100), (B, 200), (C, 300)]
arrayをzip
val array1 = arrayOf("a", "b", "c") val array2 = arrayOf(400, 500, 600) println(array1.zip(array2))
出力結果
[(a, 400), (b, 500), (c, 600)]
出力結果の(A, 100)
などの部分は、Pair<out A, out B>
型となっているようです1。
さて、これでペアのリストが得られました。
例えば以下のようにすれば、1番目の最初の要素"a"
が取得できます。
array1.zip(array2)[0].first // => "a"
associateメソッド
さて、次はマップにまとめましょう。それにはCollection#associate
を使うといいらしいです。
ペアのリストList<Pair<A, B>>
をアソシエイトすると、マップMap<A, B>
が出来上がるようです。
associate map
val list1 = listOf("A", "B", "C") val list2 = listOf(100, 200, 300) println(list1.zip(list2).associate{ it })
出力結果
{A=100, B=200, C=300} 200
使い心地
使い心地はこんな感じです。
list1.zip(list2).associate{ it }["B"] // => 200
参考
元記事
参照
- zip - Kotlin Programming Language
- Pair - Kotlin Programming Language
- associate - Kotlin Programming Language
参考
-
ところでoutってなんだ?勉強不足 ↩︎