Kotlinのany・all・noneで条件判定を行う方法【初心者向け完全ガイド】
先生と生徒の会話形式で理解しよう
生徒
「Kotlinでリストの中に特定の条件を満たすデータがあるかどうかを調べる方法ってありますか?」
先生
「ありますよ。Kotlinにはany・all・noneという便利な関数があって、条件判定を簡単にできます。」
生徒
「名前だけ見ると何となく意味はわかりますが、具体的にどう違うんですか?」
先生
「では、日常生活の例とコード例を交えて、わかりやすく説明していきましょう。」
1. any・all・noneとは?
Kotlinのany・all・noneは、コレクション(リストや配列など)に対して条件をチェックするための関数です。
- any:「1つでも条件を満たす要素があるか?」を判定
- all:「すべての要素が条件を満たすか?」を判定
- none:「1つも条件を満たす要素がないか?」を判定
日常生活で例えると、クラスの生徒名簿を見て「Aさんという名前の人が1人でもいるか(any)」「全員が出席しているか(all)」「誰も欠席していないか(none)」のようなイメージです。
2. anyの使い方(1つでも条件を満たす)
anyは、コレクションの中に条件を満たす要素が1つでもあればtrueを返します。
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
val hasEven = numbers.any { it % 2 == 0 }
println(hasEven) // 偶数が1つでもあればtrue
}
true
この例では、「偶数が1つでもあるか?」を調べています。結果はtrueになります。
3. allの使い方(すべて条件を満たす)
allは、コレクションの全ての要素が条件を満たす場合にtrueを返します。
fun main() {
val numbers = listOf(2, 4, 6)
val allEven = numbers.all { it % 2 == 0 }
println(allEven) // 全員が偶数ならtrue
}
true
この例では、全ての数字が偶数なのでtrueです。1つでも条件を満たさない要素があればfalseになります。
4. noneの使い方(1つも条件を満たさない)
noneは、コレクションの中に条件を満たす要素が1つもない場合にtrueを返します。
fun main() {
val numbers = listOf(1, 3, 5)
val noEven = numbers.none { it % 2 == 0 }
println(noEven) // 偶数がなければtrue
}
true
この例では、偶数が1つもないのでtrueです。
5. 実用例:出席状況の判定
学校の出席確認をするイメージで、any・all・noneを使った例です。
fun main() {
val students = listOf("出席", "欠席", "出席")
println(students.any { it == "欠席" }) // 誰か欠席しているか?
println(students.all { it == "出席" }) // 全員出席しているか?
println(students.none { it == "遅刻" }) // 誰も遅刻していないか?
}
true
false
true
このように日常の状況を簡単にプログラムで表現できます。
6. any・all・noneの注意点
初心者が注意すべきポイントは以下の通りです。
- 空のリストに対する
allはtrueを返す(条件違反がないため) - 空のリストに対する
anyはfalseを返す - 条件式は
{ it == 値 }のようにラムダ式で書く