Kotlinコレクション(Collection)
Javaにコレクションフレームワークがあるように、Kotlinにもコレクションフレームワークがある。Kotlinのコレクションフレームワークには、読み取り専用(read-only、immutable)のコレクションと、読み書き可能(mutable、read/write)なコレクションがある。
Collection & MutableCollection
kotlin.collection.Collectionインターフェースである。
interface Collection<out E> : Iterable<E>
EはCollectionの要素である。このインターフェースは読み取りのみをサポートする。
読み書きはMutableCollectionインターフェースでサポートされる。
interface MutableCollection<E> : Collection<E>, MutableIterable<E>
EはCollectionの要素である。
List & MutableList
ListインターフェースはCollectionインターフェースを継承している。
interface List<out E> : Collection<E>
EはCollectionの要素である。このインターフェースはListの読み取りのみをサポートする。
読み書きはMutableListインターフェースでサポートされる。
interface MutableList<E> : List<E>, MutableCollection<E>
Eはコレクションの要素である。要素の追加や削除機能を提供するインターフェースである。
配列とリストの作成
配列はArrayクラスのインスタンスとして作成する。次の形式で配列を作る。
Array<型名>(要素数) {初期処理}
List<型名>(要素数) {初期処理}
簡単な実装例を見てみよう。
fun main() {
val evenNumbers = Array(10) { it * 2 }
for (n in evenNumbers) {
println(n)
}
}
Output:
0
2
4
6
8
10
12
14
16
18
上の例では偶数を宣言している。
作成用の標準ライブラリ
arrayOf、listOf、arrayListOf、linkedListOfなど、配列やリストの宣言にはKotlin標準ライブラリから次の関数が提供されている。
arrayOfArrayインスタンスを簡単に作成する。
listOf:java.util.Listを作成する。- 要素は変更できない。
arrayListOfjava.util.ArrayListインスタンスを作成する。- Javaと同じように追加や削除などが可能である。
linkedListOfjava.util.LinkedListインスタンスを作成する。- Javaと同じように追加や削除などが可能である。
val oddNumbers = arrayOf(1, 3, 5, 7, 9)
val list = listOf(1,2,3,4,5)
val arrayList = arrayListOf(1,2,3,4,5)
val linkedList = linkedListOf(1,2,3,4,5)