Kotlin Academy · レッスン

コレクションのfilter、map、find

標準ライブラリ関数とラムダを使って、コレクションを変換・フィルタリングします。

レッスン 4/413 ステップ

「コレクションのfilter、map、find」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

3つの主要関数

filter は述語に一致する要素を残します。map は各要素を変換します。find は最初に一致した要素を返します(なければ null)。この3つで、コレクション処理の大部分をカバーできます。

filter の基本

filter は、述語が true になる要素だけを含む新しいリストを返します。

fun main() {
    val nums = listOf(1, 2, 3, 4, 5, 6)
    val evens = nums.filter { it % 2 == 0 }
    println(evens) // [2, 4, 6]
}

map の基本

map は、元のリストと同じサイズで、各要素をラムダによって変換した新しいリストを返します。

fun main() {
    val nums = listOf(1, 2, 3)
    val squares = nums.map { it * it }
    println(squares) // [1, 4, 9]
}

find の基本

find は、述語に一致する最初の要素を返します。一致する要素がなければ null を返します。

fun main() {
    val words = listOf("apple", "banana", "cherry")
    val match = words.find { it.startsWith("b") }
    println(match) // banana
}

filter と map の連結

ドット記法で組み合わせると、表現力の高いパイプラインを構築できます。

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    val result = nums.filter { it % 2 == 1 }.map { it * 10 }
    println(result) // [10, 30, 50]
}

データクラスのフィルタリング

filter と map は、データクラスのインスタンスのコレクションで特に力を発揮します。

data class User(val name: String, val age: Int)
fun main() {
    val users = listOf(User("Ana", 17), User("Ben", 25), User("Cal", 31))
    val adultNames = users.filter { it.age >= 18 }.map { it.name }
    println(adultNames) // [Ben, Cal]
}

find と first の違い

find は nullable な値を返しますが、first { ... } は一致する要素がないと例外をスローします。任意の一致を扱う場合は find を使用してください。

fun main() {
    val nums = listOf(1, 2, 3)
    println(nums.find { it > 10 })  // null
    // nums.first { it > 10 }       // throws NoSuchElementException
    println(nums.firstOrNull { it > 10 }) // null (alias of find)
}

filterNot と filterNotNull

filterNot は述語の条件を反転します。filterNotNull は nullable な値のリストから null の要素を取り除きます。

fun main() {
    val nums = listOf(1, 2, 3, 4)
    println(nums.filterNot { it % 2 == 0 }) // [1, 3]
    val maybe: List<String?> = listOf("a", null, "b", null, "c")
    println(maybe.filterNotNull()) // [a, b, c]
}

mapNotNull

mapNotNull は要素を変換してから null を取り除きます。解析処理に便利です。

fun main() {
    val raw = listOf("1", "two", "3", "four")
    val numbers = raw.mapNotNull { it.toIntOrNull() }
    println(numbers) // [1, 3]
}

実践的なパイプライン

filter、map、最後の集約処理を組み合わせた小さな例です。

data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
    val products = listOf(
        Product("Pen", 1.0, true),
        Product("Book", 12.0, false),
        Product("Lamp", 25.0, true)
    )
    val total = products
        .filter { it.inStock }
        .map { it.price }
        .sum()
    println("Available total: $total") // 26.0
}

操作の選び方

部分集合が必要なときは filter、変換するときは map、任意の単一要素を探すときは find を使用し、必要に応じて連結してください。

fun main() {
    val words = listOf("alpha", "beta", "gamma", "delta")
    println(words.filter { it.length == 5 })       // [alpha, gamma, delta]
    println(words.map { it.uppercase() })           // [ALPHA, BETA, GAMMA, DELTA]
    println(words.find { it.endsWith("ta") })       // beta
}

簡単な確認

ラムダによって要素を変換した新しいコレクションを返す関数はどれですか?

まとめ

filter は選択し、map は変換し、find は最初に一致する要素(または null)を見つけます。パイプライン内で自由に組み合わせてください。任意の値を扱う場合は mapNotNull と filterNotNull が役立ちます。

無料で開始

AI チューターと学ぶ Kotlin — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
51
レッスン
203

よくある質問

「コレクションのfilter、map、find」レッスンは無料ですか?

はい。「コレクションのfilter、map、find」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「コレクションのfilter、map、find」で何を学びますか?

標準ライブラリ関数とラムダを使って、コレクションを変換・フィルタリングします。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「コレクションのfilter、map、find」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Lambdaとは?構文と型
  2. 関数にLambdaを渡す
  3. it:暗黙のパラメータ
  4. コレクションのfilter、map、find
← Kotlin Academyに戻る