Genta Hirauchi

公開日:2020/02/04
更新日:2020/03/22

【Kotlin基礎】KotlinでListを使う方法を解説

  • KotlinでListはどうやって使うの?
  • Listの便利な使用法が知りたい。

こんな悩みをお持ちの方、いらっしゃいませんか?

本記事では、Listの基本的な使い方から、Listをループさせる方法や、Listの中身の並び替えなど、実際に開発で使用するような内容にそって解説しております。

目次

KotlinでListを使う方法

Listの基本的な使い方

まずは、Listがどういったものなのかを解説致します。
Listは変数などをまとめて管理することができる入れ物です。Listという名前からも想像できるように、並べて管理するイメージです。音楽のプレイリストのようなものでしょうか。

試しに、嵐のプレイリストをListで作成(正式には宣言という)すると、以下のようになります。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");

listOf()関数で、Listを宣言することができます。また、Kotlinでは推論型が可能なので、Stringの明記を省略することができます。

これで、5曲のプレイリストが出来上がりました。続いて、プレイリストの曲を参照する方法を紹介致します。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
println(playList[0])
println(playList.get(3))

// Love so sweet
// Happiness
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
// System.out.println(playList[0]); できない
System.out.println(playList.get(3));

// Happiness

Listの要素を参照するには[番号]を使用する方法と、get(番号)を使用する方法の2通りがあります。

ここで注目していただきたいのは、プレイリストの1番目の”Love so sweet”を参照するのに、0を指定している所です。

Listや配列では、番号(index)は0から始まります。ですから、おのずと最後の”Monster”は、4番目ということになります。この事を忘れており、5番目だからとうっかりplayList[5]としてしまうと、「5番目なんてありません」とエラーとなってしまうので、注意が必要です。

【公式ドキュメント】 : List – Kotlin Programming Language

Point
  • Listの宣言には、listOf()関数を使用する
  • Listの要素の取得は、list[番号]か、list.get(番号)を使用する
  • Listの番号(index)は、0から始まる

Listの要素数を調べる方法

Listの要素数を調べるには、sizeを使用する方法と、count()を使用する方法の2通りがあります。

先ほどの嵐のプレイリストのサイズを調べてみましょう。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
println(playList.size)
println(playList.count())

// 5
// 5
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
System.out.println(playList.size());

// 5

また、Listの要素が空かどうかを調べるには、isEmpty()を使用します。

  • Kotlin
  • Java
val playList1 = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
println(playList1.isEmpty())

val playList2 = listOf()
println(playList2.isEmpty())

// false
// true
List playList1 = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
System.out.println(playList1.isEmpty());

List playList2 = Arrays.asList();
System.out.println(playList2.isEmpty());

// false
// true

なお、空のListを作成する場合は、何の型なのかを推論することができないので、型の明記が必要となります。

Point
  • list.size、またはlist.count()で、Listの要素数を調べることができる
  • list.isEmpty()で、Listが空かどうかを調べることができる

Listをループさせる方法

続いて、Listをループさせる方法についてです。

以下は、forとforEachでListをループさせるサンプルコードです。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
for (song in playList) {
   println(song)
}

playList.forEach {
   println(it)
}

// Love so sweet
// One Love
// A・RA・SHI
// Happiness
// Monster

// Love so sweet
// One Love
// A・RA・SHI
// Happiness
// Monster
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
for (String song : playList) {
   System.out.println(song);
}

// forEachはない

// Love so sweet
// One Love
// A・RA・SHI
// Happiness
// Monster

for及びforEachについての詳しい解説は、以下の記事にまとめておりますので、そちらもあわせてご覧ください。

【Kotlin基礎】Kotlinでfor文によるループ処理を実装する方法

サンプルコードを交えた解説で、for文による基本的なループ処理や、until、step、downToの使い方、ListやMapをループさせる方法を紹介致します。Javaで実装した場合と、Kotlinで実装した場合の両方のコードを載せておりますので、Javaの経験者の方にはより理解しやすい記事となっております。

【Kotlin基礎】KotlinでforEachによるループ処理を実装する方法

forEachとは、リストや配列、Mapなどを、要素の数だけ順番に繰り返すループ処理のことをいいます。本記事では、forEachによるListやMapループ処理の実装方法、そして、forやwhileによるループ処理の実装方法について解説致します。

要素がListに含まれているかを確認する方法

要素がListに含まれているかを確認するには、contains()を使用します。

以下は、”A・RA・SHI”と”サクラ咲け”の2つの曲がプレイリストに含まれているかを確認するサンプルコードです。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
println(playList.contains("A・RA・SHI"))
println(playList.contains("サクラ咲け"))

// true
// false
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
System.out.println(playList.contains("A・RA・SHI"));
System.out.println(playList.contains("サクラ咲け"));

// true
// false

また、2つ以上の要素をまとめて確認する場合は、確認したい要素達をListにし、containsAll()で確認することができます。

  • Kotlin
  • Java
val playList1 = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
val playList2 = listOf("Love so sweet", "A・RA・SHI")
val playList3 = listOf("Love so sweet", "サクラ咲け")

println(playList1.containsAll(playList2))
println(playList1.containsAll(playList3))

// true
// false
List playList1 = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
List playList2 = Arrays.asList("Love so sweet", "A・RA・SHI");
List playList3 = Arrays.asList("Love so sweet", "サクラ咲け");

System.out.println(playList1.containsAll(playList2));
System.out.println(playList1.containsAll(playList3));

// true
// false
Point
  • list.contains()で、要素が含まれているかを調べることができる
  • list.containsAll()で、Listにした要素達が含まれているかを調べることができる

Listの要素を並び替える方法

最後に、Listの要素を並び替える方法を解説致します。

まず最初に、Listを昇順に並び替える方法です。Listを昇順に並び替えるには、sorted()を使用します。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
val sortedPlayList = playList.sorted()

for (song in sortedPlayList) {
   println(song)
}

// A・RA・SHI
// Happiness
// Love so sweet
// Monster
// One Love
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
Collections.sort(playList);

for (String song : playList) {
   System.out.println(song);
}

// A・RA・SHI
// Happiness
// Love so sweet
// Monster
// One Love

続いて、Listを逆順に並び替える方法です。Listを逆順に並び替えるには、reversed()を使用します。

  • Kotlin
  • Java
val playList = listOf("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster")
val sortedPlayList = playList.reversed()

for (song in sortedPlayList) {
   println(song)
}

// Monster
// Happiness
// A・RA・SHI
// One Love
// Love so sweet
List playList = Arrays.asList("Love so sweet", "One Love", "A・RA・SHI", "Happiness", "Monster");
Collections.reverse(playList);

for (String song : playList) {
   System.out.println(song);
}

// Monster
// Happiness
// A・RA・SHI
// One Love
// Love so sweet

注意して欲しいのは、sorted()やreversed()は、並び替えた結果を返すだけで、元のList自体を並び替えるわけではないということです。

サンプルコードでは、sortedPlayListには、並び替えた状態が反映されておりますが、playListは、並び替えられる前の状態のままです。

Point
  • list.sorted()で、昇順に並び替えた結果を返すことができる
  • list.reversed()で、逆順に並び替えた結果を返すことができる

まとめ

  • Listの宣言には、listOf()関数を使用する
  • Listの要素の取得は、list[番号]か、list.get(番号)を使用する
  • Listの番号(index)は、0から始まる
  • list.size、またはlist.count()で、Listの要素数を調べることができる
  • list.isEmpty()で、Listが空かどうかを調べることができる
  • list.contains()で、要素が含まれているかを調べることができる
  • list.containsAll()で、Listにした要素達が含まれているかを調べることができる
  • list.sorted()で、昇順に並び替えた結果を返すことができる
  • list.reversed()で、逆順に並び替えた結果を返すことができる