Kotlin でリストをフィルタリングする

Kailash Vaviya 2024年2月15日
  1. filter() 関数を使用して Kotlin でリストをフィルタリングする
  2. filterIndexed() 関数を使用して Kotlin でリストをフィルタリングする
  3. filterNot() 関数を使用して Kotlin でリストをフィルタリングする
  4. filterIsInstance() 関数を使用して Kotlin でリストをフィルタリングする
  5. filterNotNull() 関数を使用して Kotlin でリストをフィルタリングする
  6. Partition() 関数を使用して Kotlin でリストをフィルタリングする
Kotlin でリストをフィルタリングする

人の詳細のコレクションがあり、コレクション全体から 20 歳以上の人だけを取得したいとします。 どうやってそれをしますか? フィルタリングで!

フィルタリングは、Kotlin でコレクションを処理する概念です。 Kotlin では、述語を使用してコレクションをフィルタリングできます。

述語は、コレクションの要素を取り、それを関数の出力と照合するラムダ関数です。 出力が一致する場合、述語は true を返します。 それ以外の場合は、false を返します。

Kotlin の標準ライブラリには、初期コレクションを変更せずにフィルタリングできる関数がいくつかあります。 したがって、可変コレクションと読み取り専用コレクションの両方でフィルタリングが可能です。

結果のコレクションを変数に割り当てるか、必要な結果をフィルタリングした後にチェーンすることにより、結果のコレクションを関数または操作で使用することもできます。 この記事では、Kotlin でリストをフィルタリングするための述語式と共に使用するさまざまな関数について説明します。

filter() 関数を使用して Kotlin でリストをフィルタリングする

filter() 関数は、フィルタリングのための最も基本的な標準ライブラリ関数です。 述語式を受け入れ、述語の実行された値に一致する要素を含むコレクションを返します。

fun main() {
    val num = arrayListOf("two", "eleven", "eighteen", "thirty-nine", "fourty-five")
    val newNum = num.filter { it.length > 6 }
    println(newNum)
}

出力:

Kotlinフィルター機能を使う

実行コード

filterIndexed() 関数を使用して Kotlin でリストをフィルタリングする

Kotlin の filter() 関数は、述語と要素の値を一致させることができます。 ただし、特定のインデックスの要素の値を確認することはできません。

filterIndexed() 関数は、リスト要素の値とインデックスの両方をチェックできます。 ここでの述語式は、インデックスと値の 2つの引数を取ります。

この例では、上記と同じコードを使用します。 ただし、今回は、長さが 6 未満でインデックス値が 1 の要素のみを除外します。

fun main() {
    val num = arrayListOf("two", "eleven", "eighteen", "thirty-nine", "fourty-five")
    val newNum = num.filterIndexed { index, it -> (index!=1) && (it.length > 6) }
    println(newNum)
}

Kotlin filterIndexed 関数を使用する

実行コード

filterNot() 関数を使用して Kotlin でリストをフィルタリングする

Kotlin フィルターの filterNot 関数を使用して、ネガティブ フィルターを適用することもできます。 この概念を理解するには、次の例を検討してください。

filterNot() 関数は、filter() 関数の操作を逆にします。 述語に対して false を返すすべての要素を含むリストを返します。

fun main() {
    val num = arrayListOf("two", "eleven", "eighteen", "thirty-nine", "fourty-five")
    val newNum = num.filterNot { it.length > 6 }
    println(newNum)
}

KotlinのfilterNot関数を使う

実行コード

filterIsInstance() 関数を使用して Kotlin でリストをフィルタリングする

これまで、値とインデックスに基づいて Kotlin リストをフィルタリングしてきました。 filterIsInstance() を使用すると、要素のデータ型に基づいてフィルタリングできます。

ここでは、複数のデータ型のリストを作成し、そこから文字列値のみを除外します。

fun main() {
    val Str = listOf(12, null, "five", "nine", 11.0)
    println("Print only string values from the list:")
    Str.filterIsInstance<String>().forEach {
        println(it)
    }
}

出力:

Kotlin filterIsInstance 関数を使用する

実行コード

filterNotNull() 関数を使用して Kotlin でリストをフィルタリングする

この関数は、null 以外の要素のみをフィルタリングします。 Kotlin の filterNotNull() 関数を使用すると、すべての null 要素が除外されます。

以下は、いくつかの null 値と非 null 値を含むリストを作成する例です。 次に、filterNotNull() 関数を使用して、新しいリスト内の非 null 要素のみをフィルタリングします。

fun main() {
    val Num = listOf("twelve", null, null, "fourteen", null, "eighteen")
    Num.filterNotNull().forEach {
        println(it.uppercase())
    }
}

出力:

KotlinのfilterNotNull関数を使う

実行コード

Partition() 関数を使用して Kotlin でリストをフィルタリングする

フィルター関数の他に、Kotlin にはフィルタリングを可能にする partition() 関数もあります。 2つの主な違いは、返されるリストの数です。

フィルター関数は、述語に一致する要素を含むリストを 1つだけ返します。 しかし、partition() 関数は 2つのリストを返します。1つは述語に一致する要素を含み、もう 1つは述語に一致しない要素を含みます。

リストを作成し、partition() 関数を使用して 2つの個別のリスト内のすべての要素をフィルタリングします。

fun main() {
    val Num = listOf("eleven", "twelve", "thirteen", "seventeen", "eighteen")
    val (matchList, nonMatchList) = Num.partition { it.length < 7 }

    println(matchList)
    println(nonMatchList)
}

出力:

Kotlinパーティション関数を使う

実行コード

著者: Kailash Vaviya
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

関連記事 - Kotlin List