カテゴリ: Kotlin 更新日: 2026/01/13

Kotlinでコレクションを検索するfind()・first()の使い方を完全ガイド!初心者にもわかる例付き解説

Kotlinでコレクションを検索するfind()・first()の使い方
Kotlinでコレクションを検索するfind()・first()の使い方

先生と生徒の会話形式で理解しよう

生徒

「Kotlinでリストの中から特定の値を見つけたいときって、どうすればいいんですか?」

先生

「Kotlinでは、find()first()という関数を使うことで、コレクション(リストなど)の中から条件に合う要素を簡単に検索できますよ。」

生徒

「どっちを使えばいいのか迷いそうですね…使い方を詳しく教えてもらえますか?」

先生

「もちろんです!それでは、Kotlinでのfind()first()の使い方を一緒に見ていきましょう。」

1. Kotlinのfind()関数とは?

1. Kotlinのfind()関数とは?
1. Kotlinのfind()関数とは?

find()は、Kotlinの標準ライブラリに含まれている関数で、コレクションの中から最初に条件に一致した要素を見つけて返します。もし条件に合う要素がなければ、null(ヌル)を返します。

ヌル(null)とは、「何も入っていない状態」を表す特別な値で、空っぽという意味です。

たとえば、買い物リストの中から「りんご」があるか探すような感じです。以下の例を見てください。


fun main() {
    val fruits = listOf("バナナ", "りんご", "ぶどう", "みかん")
    val result = fruits.find { it == "りんご" }
    println(result)
}

りんご

このように、条件に合う「りんご」が見つかり、最初に一致した値が返されます。

2. find()で見つからないときの挙動

2. find()で見つからないときの挙動
2. find()で見つからないときの挙動

find()を使っても、条件に合う要素が見つからない場合はどうなるでしょうか?以下の例で確認してみましょう。


fun main() {
    val fruits = listOf("バナナ", "ぶどう", "みかん")
    val result = fruits.find { it == "りんご" }
    println(result)
}

null

このように、「りんご」が見つからない場合はnullが返ってきます。プログラムの中でnullかどうかを確認してから使うことが大切です。

3. Kotlinのfirst()関数とは?

3. Kotlinのfirst()関数とは?
3. Kotlinのfirst()関数とは?

first()find()と同じように、条件に合う最初の要素を返す関数です。ただし、大きな違いがあります。

first()は、条件に合う要素が見つからないとエラーになります。

以下に例を示します。


fun main() {
    val fruits = listOf("バナナ", "りんご", "ぶどう", "みかん")
    val result = fruits.first { it == "りんご" }
    println(result)
}

りんご

「りんご」が見つかるので問題なく動作しますが、次のように「りんご」が存在しない場合はどうなるでしょうか?


fun main() {
    val fruits = listOf("バナナ", "ぶどう", "みかん")
    val result = fruits.first { it == "りんご" }
    println(result)
}

Exception in thread "main" java.util.NoSuchElementException: No element matching predicate was found.

このように、条件に合う要素が存在しないとエラー(例外)が発生してしまいます。

4. find()とfirst()の違いと使い分け

4. find()とfirst()の違いと使い分け
4. find()とfirst()の違いと使い分け

ここまでで、Kotlinのfind()first()の違いが見えてきましたね。以下にポイントをまとめます:

  • find():見つからなければnullを返す
  • first():見つからなければエラーになる

そのため、安全に要素を探したいときはfind()を使い、必ず見つかることが前提であればfirst()を使いましょう。

5. 応用:find()とnullチェックの組み合わせ

5. 応用:find()とnullチェックの組み合わせ
5. 応用:find()とnullチェックの組み合わせ

find()nullが返る可能性があるため、実際に使うときは「条件に一致する要素が見つかったかどうか」をチェックするのが重要です。


fun main() {
    val names = listOf("さとし", "あかね", "たけし")
    val target = names.find { it.startsWith("ま") }

    if (target != null) {
        println("見つかりました: $target")
    } else {
        println("条件に合う名前はありませんでした")
    }
}

条件に合う名前はありませんでした

このように、安全に扱うためにはnullチェックを入れるのが基本です。

6. 数字の検索にも使える!

6. 数字の検索にも使える!
6. 数字の検索にも使える!

Kotlinのfind()first()は、文字だけでなく数字にも使えます。たとえば、リストの中から偶数を探す場合などです。


fun main() {
    val numbers = listOf(1, 3, 5, 8, 10)
    val even = numbers.find { it % 2 == 0 }
    println("偶数: $even")
}

偶数: 8

このように、数の条件にも柔軟に対応できるので、find()first()はとても便利な関数です。

まとめ

まとめ
まとめ

Kotlinでコレクションを安全かつ効率良く検索するための方法として、find()first()は非常に重要な位置を占めています。これらの検索関数は、リストやセットなど日常的に扱うデータ構造を自然な形で操作できるため、Kotlinを学び始めた初心者にとっても理解しやすく、実際のプログラムでも頻繁に使われる基本的な仕組みです。とくに、条件に一致する要素を簡潔な書き方で見つけられるという強みは、コードの見通しを良くし、複雑な処理を短くまとめる効果があります。さらに、find()では一致する要素がない場合にnullが返されるため、プログラムの挙動を想定しやすく、初心者でも扱いやすいというメリットがあります。一方で、first()は必ず要素が存在する前提で使うため、意図せぬ例外を避けるためには事前に存在を把握している場面で使用する必要があります。こうした違いを理解することで、Kotlinにおける安全性や例外処理の考え方を身につけられますし、アプリケーションの安定性にもつながります。

また、コレクションの検索は文字列や数字だけでなく、オブジェクトを扱う際にも応用できます。条件式を書くだけで自在に検索できるという利点は、Kotlinが持つラムダ式と相性が良く、より高度なフィルタリングや集計処理にも発展させることが可能です。検索結果がnullとなるケースに備えて条件分岐を行うことで、安全なプログラム設計を行えるという点も学べたはずです。とくにKotlinはnull安全を強く意識した言語のため、find()で返されるnullへの理解は今後必ず役に立ちます。また、first()に関しては、条件に一致する要素が存在しない場合に例外が発生するという挙動をしっかり覚えておく必要があります。これはプログラムがクラッシュする要因にもなるため、適切な用途で使用しなければなりません。用途の見極めこそがKotlinのコレクション活用の基本となり、データ操作をより意図通りに制御するポイントになります。

実際の開発現場では、コレクションの検索は膨大なデータの中から必要な情報を素早く取り出す場面で必須となります。例えばユーザー一覧から特定の名前を検索したり、設定値リストの中から条件に一致する項目を取り出したりといった処理が挙げられます。そのため、検索関数の仕組みと挙動を理解しておくことで、システム全体の動作を予測しやすくなり、バグの少ない安定したアプリケーションを構築する力が身につきます。今後さらにStream処理やfilter()などの関数と組み合わせていくことで、より柔軟で高度なデータ操作にも対応できるようになります。今回の知識を土台として発展的な処理へ進めるためにも、まずは基本となるfind()first()の違いと役割を確実に理解しておくことが大切です。検索結果が存在するかどうかを常に意識し、必要に応じてnullチェックや例外対策を取り入れることで、強固なアプリケーション設計につながります。以下には簡単な応用サンプルを載せておくので、理解の確認として参考にしてみてください。

find()とfirst()を使った応用サンプル


data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(
        User("さとし", 20),
        User("あかね", 25),
        User("たけし", 30)
    )

    val foundUser = users.find { it.age > 22 }
    val firstUser = users.first { it.name.startsWith("た") }

    println("find結果: $foundUser")
    println("first結果: $firstUser")
}

find結果: User(name=あかね, age=25)
first結果: User(name=たけし, age=30)

このサンプルでは、find()を使って22歳以上のユーザーを検索し、first()では名前が特定の文字で始まるユーザーを検索しています。実際のデータ操作と同じように、条件を自由に記述できるため、とても柔軟に検索処理を行えることがわかります。コレクション操作の理解が深まるほど、アプリケーション全体の処理がスムーズになり、より読みやすく分かりやすい Kotlin コードを書けるようになります。

先生と生徒の振り返り会話

生徒

「今日の学習で、find()とfirst()の違いがはっきりわかってきました!条件に合う要素がないときの挙動がまったく違うんですね。」

先生

「その通りです。特にfind()はnullが返ってくるので、安全に扱える一方で、nullチェックを忘れると予期しない動作につながることがあります。」

生徒

「逆にfirst()は条件に合う要素が必ずある前提で使うんですね。例外が起きるって聞くと、使う場面を選ばないと危険ですね…。」

先生

「その理解で完璧です。どちらも特徴を捉えておけば、コレクション検索の使い分けが一気に楽になりますよ。慣れてくれば、状況に応じて自然に使い分けられるようになります。」

生徒

「次はfilter()とかも一緒に使ってみたいです!コレクション操作って奥深くて面白いですね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinでfindを使ったときに検索結果がnullになるのはどういう意味ですか?リスト検索で値が見つからない状況がよくわからないので詳しく知りたいです。

findが返すnullは、指定した条件に一致する要素がコレクションの中に存在しなかったことを示します。検索対象が文字列でも数字でも同じで、条件が一致しない限りnullが戻るため、必ずnullチェックを行うことが大切です。こうした動作はKotlinのnull安全の仕組みと深く関わり、初心者でも理解しやすい挙動になっています。
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのforループの基本!範囲・配列・コレクションの繰り返し処理
New2
Go言語
Go言語のスライスでappend時のメモリの仕組みを理解しよう!初心者でもわかる基礎解説
New3
Go言語
Go言語のスコープとは?ローカル変数・グローバル変数の違いと使い分け
New4
Go言語
Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Swift
Swiftで数値と文字列を相互変換!NumberFormatterで桁区切りや通貨表示をわかりやすく解説
No.6
Java&Spring記事人気No6
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.7
Java&Spring記事人気No7
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.8
Java&Spring記事人気No8
Swift
SwiftPMでのバージョン指定と互換性の考え方を初心者向けに徹底解説