Kotlinで繰り返し要素を使用してコレクションを作成する
1. 概要
このクイックチュートリアルでは、繰り返し要素を含むコレクションを作成する方法を学習します。
2. 繰り返しコレクションの作成
Kotlin 1.1以降、List(size:Int、init:(index:Int)-> T)関数を使用して、指定されたサイズで読み取り専用リストを作成できます。 さらに、指定された init 関数を使用して各要素を初期化できます。この関数は、要素の位置を入力として受け取ります。
val repeated = List(3) { index -> "Hello" }
assertThat(repeated).hasSize(3)
assertThat(repeated.toSet()).containsExactly("Hello")
ここでは、「hello」に等しい3つの要素を持つリストを作成しています。 ラムダ引数を使用しないため、アンダースコア文字に置き換えることもできます。
val repeated = List(3) { _ -> "Hello" }
さらに簡潔に言うと、アンダースコアを削除することもできます。
val repeated = List(3) { "Hello" }
このように、デフォルトでは「 it」ラムダ引数名になっていますが、これを使用することはありません。 同様に、 Mutable List やさまざまな種類の配列など、他の種類のコレクションにも同じアプローチを使用できます。
val mutable = MutableList(3) { "Hello" }
assertThat(mutable.toSet()).containsExactly("Hello")
val charArray = CharArray(3) { 'H' }
assertThat(charArray.toSet()).containsExactly('H')
val array = Array(3) { "Hello" }
assertThat(array.toSet()).containsExactly("Hello")
val intArray = IntArray(3) { 42 }
assertThat(intArray.toSet()).containsExactly(42)
これに加えて、 generateSequence(nextFunction :()-> T?)関数を使用して、同じ要素が繰り返されるシーケンスを作成できます。
val repeated = generateSequence { "Hello" }.take(3).toList()
assertThat(repeated).hasSize(3)
assertThat(repeated.toSet()).containsExactly("Hello")
ここでは、無限シーケンスの最初の3つの要素を取得し、結果の有限シーケンスをリストに変換しています。
3. 結論
このチュートリアルでは、 List 、 MutableList 、さらには繰り返し要素を含むArrayなどのさまざまなコレクションを作成する方法を説明しました。
いつものように、すべての例はGitHubでから入手できます。