0Pricing
Kotlin Academy · レッスン

標準ライブラリでコレクションを反復・変換する

実際のコレクション例でmap、filter、any、all、countを使用します。

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

コレクションをパイプラインとして扱う

Kotlinの標準ライブラリでは、連結した操作によってコレクションを変換します。各関数は新しいコレクションを返し、元のコレクションは変更されません。

map:1対1の変換

mapは各要素に関数を適用し、結果のリストを返します。
val prices = listOf(10, 20, 30)
val withTax = prices.map { it * 1.1 }
println(withTax)  // [11.0, 22.0, 33.0]

flatMap:1対多の変換

flatMapは各要素をリストに変換した後、すべてのリストを1つに平坦化します。
val sentences = listOf("hello world", "foo bar")
val words = sentences.flatMap { it.split(" ") }
println(words)  // [hello, world, foo, bar]

filterとfilterNot

filterは述語に一致する要素を残し、filterNotは一致しない要素を残します。
val nums = (1..10).toList()
val evens = nums.filter { it % 2 == 0 }
val odds = nums.filterNot { it % 2 == 0 }
println(evens)  // [2, 4, 6, 8, 10]

groupBy:キーでグループ化

groupByは、キー関数に基づいて要素をグループ化したMap>を返します。
val words = listOf("one", "two", "three", "four", "five")
val byLength = words.groupBy { it.length }
println(byLength)
// {3=[one, two], 5=[three], 4=[four, five]}

associateとassociateBy

associateはキーと値のペアを返すラムダを使ってMapを構築します。associateByはキー抽出関数を使用します。
val items = listOf("apple", "banana", "cherry")
val byFirst = items.associateBy { it.first() }
println(byFirst)  // {a=apple, b=banana, c=cherry}

partition:2つに分割

partitionはコレクションを、一致する要素と一致しない要素の2つのリストに分割します。
val (evens, odds) = (1..8).partition { it % 2 == 0 }
println(evens)  // [2, 4, 6, 8]
println(odds)   // [1, 3, 5, 7]

distinctとdistinctBy

distinctは重複する要素を削除します。distinctByはキーに基づいて重複を削除します。
val nums = listOf(1, 2, 2, 3, 1, 4)
println(nums.distinct())  // [1, 2, 3, 4]
val words = listOf("Hi", "hello", "HI")
println(words.distinctBy { it.lowercase() })

take、drop、chunked

takeは最初のN個の要素を取得し、dropは最初のN個をスキップし、chunkedはサイズNのサブリストに分割します。
val list = (1..10).toList()
println(list.take(3))    // [1, 2, 3]
println(list.drop(7))    // [8, 9, 10]
println(list.chunked(3)) // [[1,2,3],[4,5,6],[7,8,9],[10]]

zip:2つのコレクションをペアにする

zipは2つのリストをペアのリストにまとめます。短い方のリストの長さで処理を停止します。
val names = listOf("Alice", "Bob", "Charlie")
val scores = listOf(90, 85, 92)
val combined = names.zip(scores)
println(combined)  // [(Alice, 90), (Bob, 85), (Charlie, 92)]

sumOf、minOf、maxOf、averageOf

変換関数を使った集計を簡潔に記述するための関数です。
val items = listOf("apple", "banana", "cherry")
println(items.sumOf { it.length })    // 18
println(items.maxOf { it.length })    // 6
println(items.minOf { it.length })    // 5

確認問題

キーセレクターによってコレクションをMap>にグループ化する関数はどれですか。

まとめ

map、flatMap、filter、groupBy、associate、partition、distinct、zipは、コレクション変換の中核となるツールです。これらを連結して表現力の高いパイプラインを構築できます。次は、クラスとコンストラクターです。

よくある質問

「標準ライブラリでコレクションを反復・変換する」レッスンは無料ですか?

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

「標準ライブラリでコレクションを反復・変換する」で何を学びますか?

実際のコレクション例でmap、filter、any、all、countを使用します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「標準ライブラリでコレクションを反復・変換する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. listOf、setOf、mapOf:読み取り専用コレクション
  2. mutableListOf、mutableMapOf:可変コレクションの構築
  3. 要素へのアクセス:get、first、last、getOrNull
  4. 標準ライブラリでコレクションを反復・変換する
← Kotlin Academyに戻る