フィルタリング

Kotlinにおける**フィルタリング(filtering)**とは、コレクション(List, Set, Mapなど)から特定の条件に合致する要素だけを取り出す処理を指します。Kotlinは高階関数とラムダ式を使って簡潔かつ直感的にフィルタリングを行うことができます。


1. 基本的な filter 関数の使い方

kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6) val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers) // 出力: [2, 4, 6]
  • filter は、各要素に対して条件(ラムダ式)を評価し、true を返すものだけを残します。


2. filterNot 関数

filterNotfilter の反対で、条件に合致しない要素を残します。

kotlin
val numbers = listOf(1, 2, 3, 4, 5) val oddNumbers = numbers.filterNot { it % 2 == 0 } println(oddNumbers) // 出力: [1, 3, 5]

3. filterIndexed 関数

インデックスを考慮してフィルタリングを行いたいときに使用します。

kotlin
val words = listOf("zero", "one", "two", "three") val filtered = words.filterIndexed { index, _ -> index % 2 == 0 } println(filtered) // 出力: [zero, two]

4. filterIsInstance<T>()

特定の型の要素のみを取り出す際に便利です。

kotlin
val mixedList = listOf(1, "two", 3, "four") val strings = mixedList.filterIsInstance<String>() println(strings) // 出力: [two, four]

5. Mapのフィルタリング

filter:キーと値のペアを使ってフィルタリング

kotlin
val map = mapOf("a" to 1, "b" to 2, "c" to 3) val filteredMap = map.filter { (key, value) -> value > 1 } println(filteredMap) // 出力: {b=2, c=3}

filterKeys:キーに対する条件

kotlin
val filteredKeys = map.filterKeys { it != "a" } println(filteredKeys) // 出力: {b=2, c=3}

filterValues:値に対する条件

kotlin
val filteredValues = map.filterValues { it % 2 != 0 } println(filteredValues) // 出力: {a=1, c=3}

まとめ

Kotlinのフィルタリング機能は以下のような特徴を持ちます:

関数名 説明
filter 条件を満たす要素を抽出
filterNot 条件を満たさない要素を抽出
filterIndexed インデックス付きで条件判定
filterIsInstance 指定した型の要素のみを抽出
filterKeys Mapのキーに基づくフィルタリング
filterValues Mapの値に基づくフィルタリング

Kotlinではラムダ式を使って簡潔かつ強力なフィルタリング処理が可能です。

生成日:2025/05/04