公開日:2020/01/25更新日:2020/08/03
【Kotlin基礎】KotlinでforEachによるループ処理を実装する方法

- KotlinでforEachの実装方法が知りたい。
- MapをforEachでループさせたい。
- Javaで実装した場合との違いが知りたい。
そんな方、いらっしゃいませんか?
本記事では、forEachの実装方法をサンプルコードを交え、わかりやすく解説しております。
本記事を読み終わった後、みなさんがforEachを使用できるようになっていれば幸いです。
目次
KotlinでforEachによるループ処理を実装する方法
forEachとは?
まずはforEachがどういったときに使用される処理なのかを解説致します。
forEachとは、リストや配列を、要素の数だけ順番に繰り返すループ処理のことをいいます。
たとえば、[“犬”, “猫”, “パンダ”]という配列をforEachでループさせると、
1ループ目:”犬”、2ループ目:”猫”、3ループ目:”パンダ”といったように、要素を順番に取得することができます。
forEachの基本的な実装方法
forEachは次のように実装します。
- Kotlin
List.forEach { element ->
// elementで明示的に要素を取得
}
List.forEach {
// itで暗黙的に要素を取得
}
1つ目はラムダ式による実装方法です。
ラムダ式は、(引数) -> { 戻り値 -> 処理 }というように実装する構文です。サンプルでは、変数elementから、リストの要素を順番に参照することができます。
2つ目はラムダ式を省略した実装方法です。
このように戻り値を明示しなかった場合、Kotlinでは、暗黙的に”it”という変数で、リストの要素を参照することができます。
以下は、実際の使用例です。
■ “犬”、”猫”、”パンダ”というStringの配列をforEachでループさせる処理
- Kotlin
- Java
val animals = arrayOf("犬", "猫", "パンダ")
animals.forEach { element ->
println(element)
}
あるいは
animals.forEach {
println(it)
}
// "犬"、"猫"、"パンダ"
String[] animals = { "犬", "猫", "パンダ" };
for (String animal : animals) {
System.out.println(animal);
}
// "犬"、"猫"、"パンダ"
- ラムダ式で実装することで、要素を格納する変数を指定できる
- ラムダ式を省略すると、要素はitに格納される
【公式ドキュメント】 : forEach – Kotlin Programming Language
MapをforEachでループさせる方法
続いて、MapをforEachでループさせる方法を紹介致します。
MapをforEachでループさせるには、次のように実装します。
- Kotlin
Map.forEach { (key, value) ->
// KeyとValueを、任意の変数で取得
}
Map.forEach {
// Keyはit.key、Valueはit.valueで取得
}
先ほどのListのforEachの時と同様、ラムダ式とラムダ式を省略したものの2通りがあります。
ラムダ式の場合は、MapのKeyとValueを取得する変数を指定することができます。
ラムダ式を省略した場合は、MapのKeyはit.Keyで、MapのValueはit.valueで取得することができます。
では、実装例です。
■ 果物の名前と値段を順番に出力する処理
- Kotlin
- Java
val map = mapOf("リンゴ" to 80, "ミカン" to 100, "メロン" to 1000)
map.forEach { (key, value) ->
println("$key は $value 円です。")
}
あるいは
map.forEach {
println("${it.key} は ${it.value} 円です。")
}
// リンゴ は 80 円です。
// ミカン は 100 円です。
// メロン は 1000 円です。
Map map = new HashMap<>();
map.put("リンゴ", 80);
map.put("ミカン", 100);
map.put("メロン", 1000);
for(Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + " は " + entry.getValue().toString() + " 円です。");
}
// リンゴ は 80 円です。
// ミカン は 100 円です。
// メロン は 1000 円です。
- ラムダ式を使用した場合、KeyとValueを取得する変数を指定できる
- ラムダ式を省略した場合、Keyはit.key、とValueはit.valueで取得できる
forEach以外のループ処理
for文でのループ処理
for文を使用したループ処理は、次のように実装します。
- Kotlin
for(変数 in A..B) {
// ループ処理
}
A..Bの部分には、『0..4』のように、繰り返すレンジを指定します。
変数の部分には、任意の変数を指定します。
変数は、初回の繰り返し時には、レンジで指定した最小の値が格納されており、
繰り返されるたびにインクリメント(1ずつ増加)していきます。
for文についての詳しい解説は、以下の記事にまとめておりますので、詳しく知りたい方は、こちらの記事をご覧いただければと思います。
while、do-whileでのループ処理
while、do-whileを使用したループ処理は、次のように実装します。
- while
- do-while
while(条件式) {
// ループ処理
}
do {
// ループ処理
} while(条件式)
条件式がtureである限り、ループ処理が実行され続けます。
whileは、条件式の判定が行われた後、ループ処理が実行されます。一方do-whileは、ループ処理が実行された後、条件式の判定が行われます。
while、do-whileについての詳しい解説は、以下の記事にまとめておりますので、詳しく知りたい方は、こちらの記事をご覧いただければと思います。
まとめ
- List.forEach{ 変数 -> ループ処理 } でListのループ処理ができ、要素は指定した変数から取得できる
- List.forEach{ ループ処理 } でListのループ処理ができ、要素は”it”で取得できる
- Map.forEach{ (キー, 値) -> ループ処理 } でMapのループ処理ができ、
指定した変数からキーと値が取得できる - Map.forEach{ ループ処理 } でMapのループ処理ができ、
キーは”it.key”、値は”it.value”で取得できる
関連記事