【Kotlin入門】Listとは?使い方をわかりやすく解説


KotlinでListの使い方がよくわからない
Listの扱い方がよくわからない
Listの種類がよくわからない

Kotlinの学習を始めたての方はListの種類や使い方、持ってる関数などよくわからないところもありますよね。

こんにちは!エンジニアのかいです。Kotlinをこれから始めようとしている人、もしくは始めたての人であればKotlinのListについていまいち理解できていない人もいると思います。

そこで本日はKotlin初心者の方を対象にListの使い方や種類など詳しく解説していきますのでこれからListを学びたいという方はぜひ参考にしていってください。

この記事はこんな人のために書きました。

  • KotlinでListを使いこなしたい
  • Listの種類を理解して、場合に応じたものを使えるようになりたい
  • Listのもつメソッドなども使って見たい

KotlinのListとは

Kotlinには標準のライブラリとして様々なものが用意されていますが、その中の一つにコレクションというものがあります。コレクションの中にはListやMapなどを司る様々なインターフェースが用意されています。

そのインターフェースが実装されたlistOf()やmapOf()などを使うことで、ListやMapを生成することができます。

KotlinのListには(Listにはというよりコレクションには)、書き込み可能なものと読み込み専用なものがあります。それぞれの使い方を謝るとバグの原因になりますね。

これらについては、後述するのでしっかりと理解しておきたいところです。

Listを使うメリット

さて、ここで一度立ち返ってListを使うメリットについて考えましょう。Listとは、配列などとも言われるインデックスで値を管理する箱みたいなものですね。

つまり、たくさんのデータを一つの箱に入れて扱うことができるのです。配列は、プログラミングをする上で必須前提となる知識なのできちんと理解しておきましょう。

Listを使ってみよう

さて、それでは実際にListを使って見ましょう。

上記にもあげた通りKotlinにはListインターフェースが実装されたメソッドがいくつかあります。

fun main(args: Array<String>) {
    val list = listOf(1,2,3)
    println(list)
}
[1, 2, 3]

このように書くことで配列を作成することができます。

fun main(args: Array<String>) {
    val list = listOf(1,2,3)
    println(list[1])
}
2

また、このようにインデックスを指定することで中身の値を指定することができますね。配列はfor文とセットで扱われることが多く、以下のようなコードはよく見かけます。

fun main(args: Array<String>) {
    val list = listOf(1,2,3)
    for(i in list){
        println(i)
    }
}
1
2
3

sortしてみよう

さて、それではListの持つメソッドであるsortedを使ってみましょう。

fun main(args: Array<String>) {
    val list = listOf(3,2,1).sorted()

    println(list)
}
[1, 2, 3]

このとおり、昇順になりましたね。

mutableなlist

冒頭で話した通りListには変更可能なものと、読み取り専用のものがあります。それぞれの挙動について理解しましょう。

fun main(args: Array<String>) {
    val mutableList = mutableListOf(1, 2, 3)
    mutableList.add(4)

    println(mutableList)
}
[1, 2, 3, 4]

変更可能なのが確認できますね。

読み取り専用なlist

fun main(args: Array<String>) {
    val ro = listOf(1, 2, 3)
    ro.add(4)

    println(ro)
}
Error:(3, 8) Kotlin: Unresolved reference: add

このように、listOfで読み取り専用なListをつくるとコンパイルエラーになりますね。

配列の種類

Kotlinには3つの配列があり、今回紹介したListもその1つです。この章では、その3種類について違いを説明していきます。

3つの配列とは、List, Array, ArrayListのことでそれぞれの以下の特徴があります。

配列特徴
List要素の変更:不可
要素数の変更:不可
Array要素の変更:可
要素数の変更:不可
ArrayList要素の変更:可
要素数の変更:可

List

Listは先ほど説明した通り、要素の変更も、要素数の変更も許されていません。読み取り専用なので当たり前といえば当たり前ですね。

Array

Arrayは、要素の変更は許されているが、要素数の変更は許されていない配列です。例をみてみましょう。

fun main(args: Array<String>) {
    val arr = arrayOf(1,2,3)
    arr[0] = 4

    for(i in arr){
        println(i)
    }
}
4
2
3

値の変更が確認できますね。

fun main(args: Array<String>) {
    val arr = arrayOf(1,2,3)
    arr.add(9)

    for(i in arr){
        println(i)
    }
}
Error:(3, 9) Kotlin: Unresolved reference: add

しかしこのように要素の追加は許されていません。

ArrayList

さて、最後のArrayListは変更も追加も許されている配列です。

fun main(args: Array<String>) {
    val arrList = arrayListOf(1,2,3)
    arrList[0] = 4
    arrList.add(9)

    for(i in arrList){
        println(i)
    }
}
4
2
3
9

変更と追加が確認できますね。

まとめ

本日は、KotlinのListやその他の配列について詳しく説明していきました。

用途にあったものを使えるようになると、メモリ効率もいいですしバグを未然に防げるのでぜひマスターしておきましょう!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

かい

かい

日向徹かこよすぎか

[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説