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から入手できます。