クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Kotlin

【Kotlin入門】配列よりも実用性のあるListの使い方

kotlin には配列と似たような使い方ができる List が存在します。

List 自体は Java 経験者にはおなじみですが、kotlin では MutableList を使う機会も増えてきます。

いわゆるコレクション(Collection)の一種ですが、List は重要になってくるので要チェックです。

Listの定義

List の扱いは、以前紹介した Array と似たような部分があります。

しかし、配列の時には中に入れる型に応じて値の代入方法も変わっていました。

あわせて読みたい
【Kotlin入門】型ごとに適した配列定義についてJava でも同じですが、Kotlin でもあまり数値や文字列に特化した配列を使うケースは少ないです。 どちらかというと、List...

List では、値の代入に listOf() という関数を使用します。

val numbers: List = listOf(1, 2, 3, 4, 5)

for (n in numbers) {
    println("${n}です")
}

結果は配列の時と同じく、List の中身が順番に表示されます。

1です
2です
3です
4です
5です

ちなみに、List にはジェネリクスの機能を利用して <> の中に型が定義できるようになっています。

よって、ここを String に変えても Boolean にしても、値の代入には listOf() がそのまま使えます。

配列とListの大きな違い

上記のサンプルソースでは配列の時とほぼ違いはありませんが、大きく違うのは値の書き換えができないことです。

下記のようにソースを書き換えてビルドしようとするとエラーが発生します。

val numbers: List = listOf(1, 2, 3, 4, 5)

numbers[0] = 99

以下のように Int 型の配列の場合は、値を書き換えても問題ありません。

val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)

numbers[0] = 99

Listに要素を追加したい場合

List は値の書き換えができないことはお伝えしましたが、要素を追加することもできません。

これは意外なことでしたが、例えば空の List を用意してそこに 1 件ずつデータを詰め込むことができないわけです。

そんな用途のために、kotlin には ArrayList や MutableList が用意されています。

ここでは MutableList を使って説明していきます。

val numbers: MutableList = mutableListOf(1, 2, 3, 4, 5)

numbers.add(6)

for (n in numbers) {
    println("${n}です")
}

上記の場合はビルドも通りますし、結果も以下のようになります。

1です
2です
3です
4です
5です
6です

add() を使うと MutableList の最後に要素を追加できますが、add(0, 6) のように引数を変えることで MutableList の好きな位置に値を挿入することができます。

詳しくは MutableList の公式リファレンスをご覧ください。

ただし混乱の元となるので、よほどの理由がない限り間に入れ込むことは避けた方がいいと思います。

Listの要素を削除したい場合

MutableList の特定の値を削除したい場面は出てくるかもしれません。

削除後は List の間が詰められるので、間に値を挿入することに比べると複雑さはありません。

val numbers: MutableList = mutableListOf(1, 2, 3, 4, 5)

numbers.add(6)
    
numbers.removeAt(3)

for (n in numbers) {
    println("${n}です")
}

結果は以下の通りです。

1です
2です
3です
5です
6です

ちなみに、removeAt() ではなく remove() を使うと特定の値を指定して削除できます。

val numbers: MutableList = mutableListOf(1, 2, 3, 4, 5)

numbers.add(6)
    
numbers.remove(3)

for (n in numbers) {
    println("${n}です")
}

これは List の 3 番目ではなく、3 の値が削除されます。

1です
2です
4です
5です
6です

まとめ

kotlin の List について紹介しました。

値の操作(追加、削除)をする場合は MutableList の方が使い勝手がいいですが、参照するだけであれば List の方が効果的な場面もあります。

ちなみに途中で紹介した ArrayList も kotlin には存在しますが、使用については MutableList に比べると推奨されていないようです。

また、List は順序を意識した使い方になりますが、順序を意識しない場合は Map などの別のコレクションを使うとパフォーマンスの向上が期待できます。

やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

created by Rinker
¥2,592
(2018/09/20 12:37:29時点 Amazon調べ-詳細)

あなたにオススメ