Kotlin でコレクションや配列を使うときにどれを使ったらいいのかいつも忘れてしまうのでメモ。
間違いなどありましたらご指摘お願いします。
コレクション
次の3種類がある。要素や要素数の変更はできない。
名前 | 機能 | 作り方 |
---|---|---|
List | リスト | listOf() |
Set | 重複なしのリスト | setOf() |
Map | key と value を保持する | mapOf() |
要素や要素数を変更できるようにした、MutableList、 MutableSet、MutableMap もある。
配列
Kotlin で配列を使おうとするといくつか種類があって迷ってしまうのでまとめ。
基本的に要素と要素数の変更を認めるかで使い分ければよさそう。
-> 基本的には要素を変更しない場合は List、変更する場合は MutableList でよさそう。(@sdkei さんのコメント参照)
Kotlin | Java の対応 | 作り方 | 要素の変更 | 要素数の変更 |
---|---|---|---|---|
List<T> | List<T> | listOf() | ☓ | ☓ |
Array<T> | T[] | arrayOf() | ○ | ☓ |
ArrayList<T> | ArrayList<T> | arrayListOf() | ○ | ○ |
MutableList<T> | ArrayList<T> | mutableListOf() | ○ | ○ |
- Array には T がプリミティブ型の場合のクラス (IntArray、ByteArray など) が用意されている。
- MutableList と ArrayList は同じと考えて良い(MutableList は裏側では ArrayList を呼び出している。)。
将来的に MutableList の裏側の実装が変更される可能性はあるらしい。使い分けとしては、基本的には MutableList を使い、
ArrayList でなければならないというときのみ ArrayList を使うということでよさそう。(Kotlin の ArrayList の実体は Java の ArrayList なので、Java との相互運用を考えた場合とか???)
参考等
Kotlinの公式ドキュメントは平易な英語で書かれていてわりかし読みやすい。