カテゴリ: Kotlin 更新日: 2025/09/04

Kotlinのコレクションの拡張関数活用例まとめ

Kotlinのコレクションの拡張関数活用例まとめ
Kotlinのコレクションの拡張関数活用例まとめ

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

生徒

「Kotlinで配列やリストをもっと便利に使う方法ってありますか?」

先生

「ありますよ。Kotlinには『拡張関数』という機能があって、既存のコレクションに便利な機能を追加したり、もともと用意されているたくさんの便利関数を使えます。」

生徒

「例えばどんなことができるんですか?」

先生

「要素の検索、変換、グループ分け、重複削除、集計など、日常的によく使う処理を短いコードで書けます。では具体例を見ていきましょう。」

1. filterとmapで条件抽出と変換

1. filterとmapで条件抽出と変換
1. filterとmapで条件抽出と変換

filterは条件に合う要素だけを残し、mapは要素を別の形に変換します。


fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    val doubledEven = numbers.filter { it % 2 == 0 }.map { it * 2 }
    println(doubledEven)
}

[4, 8]

このように、偶数だけを取り出して2倍にする処理が1行で書けます。

2. any・all・noneで条件チェック

2. any・all・noneで条件チェック
2. any・all・noneで条件チェック

anyは「1つでも条件に合う要素があるか」、allは「すべての要素が条件を満たすか」、noneは「1つも条件に合う要素がないか」を判定します。


fun main() {
    val ages = listOf(18, 20, 25)
    println(ages.any { it < 20 })  // true
    println(ages.all { it >= 18 }) // true
    println(ages.none { it < 0 })  // true
}

3. distinctとtoSetで重複削除

3. distinctとtoSetで重複削除
3. distinctとtoSetで重複削除

リストから重複を削除するにはdistinct()toSet()が使えます。


fun main() {
    val items = listOf("apple", "banana", "apple", "orange")
    println(items.distinct()) // [apple, banana, orange]
    println(items.toSet())    // [apple, banana, orange]
}

4. groupByでグループ分け

4. groupByでグループ分け
4. groupByでグループ分け

groupByは特定の条件で要素をまとめます。


fun main() {
    val words = listOf("apple", "apricot", "banana", "blueberry")
    val grouped = words.groupBy { it.first() }
    println(grouped)
}

{a=[apple, apricot], b=[banana, blueberry]}

5. sum・average・countで集計

5. sum・average・countで集計
5. sum・average・countで集計

数値コレクションの合計や平均、件数を求められます。


fun main() {
    val scores = listOf(80, 90, 100)
    println(scores.sum())      // 270
    println(scores.average())  // 90.0
    println(scores.count())    // 3
}

6. zipで2つのコレクションを結合

6. zipで2つのコレクションを結合
6. zipで2つのコレクションを結合

同じ位置の要素同士をペアにします。


fun main() {
    val names = listOf("Tom", "Jane")
    val scores = listOf(80, 90)
    val paired = names.zip(scores)
    println(paired)
}

[(Tom, 80), (Jane, 90)]

7. flatten・flatMapで入れ子構造を平坦化

7. flatten・flatMapで入れ子構造を平坦化
7. flatten・flatMapで入れ子構造を平坦化

リストの中にリストがある場合、1つのリストにまとめます。


fun main() {
    val nested = listOf(listOf(1, 2), listOf(3, 4))
    println(nested.flatten()) // [1, 2, 3, 4]
}

8. sorted・sortedByで並び替え

8. sorted・sortedByで並び替え
8. sorted・sortedByで並び替え

sorted()は昇順に、sortedBy()は条件付きで並び替えます。


fun main() {
    val items = listOf("banana", "apple", "cherry")
    println(items.sorted())            // [apple, banana, cherry]
    println(items.sortedBy { it.length }) // [apple, banana, cherry]
}

9. fold・reduceで累積計算

9. fold・reduceで累積計算
9. fold・reduceで累積計算

すべての要素を順番に処理して1つの値にまとめます。


fun main() {
    val numbers = listOf(1, 2, 3)
    println(numbers.fold(0) { acc, n -> acc + n }) // 6
}

10. 拡張関数を自作する

10. 拡張関数を自作する
10. 拡張関数を自作する

Kotlinでは自分で拡張関数を作ることもできます。例えば、リストの平均値を整数で返す拡張関数を作ると次のようになります。


fun List<Int>.averageInt(): Int {
    return if (this.isEmpty()) 0 else this.sum() / this.size
}

fun main() {
    val scores = listOf(70, 80, 90)
    println(scores.averageInt()) // 80
}
カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎