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>

ECollectionの要素である。

List & MutableList

ListインターフェースはCollectionインターフェースを継承している。

interface List<out E> : Collection<E>

ECollectionの要素である。このインターフェースは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

上の例では偶数を宣言している。

作成用の標準ライブラリ

arrayOflistOfarrayListOflinkedListOfなど、配列やリストの宣言にはKotlin標準ライブラリから次の関数が提供されている。

  • arrayOf
    • Arrayインスタンスを簡単に作成する。
  • listOf:
    • java.util.Listを作成する。
    • 要素は変更できない。
  • arrayListOf
    • java.util.ArrayListインスタンスを作成する。
    • Javaと同じように追加や削除などが可能である。
  • linkedListOf
    • java.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)

参照