Kotlin Sequence filter Function

The filter function in Kotlin is used to filter elements in a sequence based on a given predicate. It is part of the Kotlin standard library and allows you to create a new sequence containing only the elements that match the specified condition.

Table of Contents

  1. Introduction
  2. filter Function Syntax
  3. Understanding filter
  4. Examples
    • Basic Usage
    • Filtering Even Numbers
    • Using filter with Custom Functions
    • Chaining filter with Other Functions
  5. Real-World Use Case
  6. Conclusion

Introduction

The filter function allows you to select elements from a sequence that match a given condition. This is useful for scenarios where you want to exclude certain elements from a sequence based on specific criteria, enabling more precise data processing.

filter Function Syntax

The syntax for the filter function is as follows:

fun <T> Sequence<T>.filter(predicate: (T) -> Boolean): Sequence<T>

Parameters:

  • predicate: A lambda function that defines the condition each element in the sequence must satisfy to be included in the resulting sequence.

Returns:

  • A new sequence containing only the elements that match the predicate.

Understanding filter

The filter function takes a predicate as an argument and applies this predicate to each element in the sequence, creating a new sequence with the elements that satisfy the condition. This operation is lazy when used with sequences, meaning that the filtering is applied only when the resulting sequence is iterated over.

Examples

Basic Usage

To demonstrate the basic usage of filter, we will create a sequence and apply a simple condition to filter its elements.

Example

fun main() {
    val numbers = sequenceOf(1, 2, 3, 4, 5)
    val evenNumbers = numbers.filter { it % 2 == 0 }
    println(evenNumbers.toList()) // Output: [2, 4]
}

Output:

[2, 4]

Filtering Even Numbers

This example shows how to filter even numbers from a sequence using the filter function.

Example

fun main() {
    val numbers = sequenceOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val evenNumbers = numbers.filter { it % 2 == 0 }
    println(evenNumbers.toList()) // Output: [2, 4, 6, 8, 10]
}

Output:

[2, 4, 6, 8, 10]

Using filter with Custom Functions

You can also use custom functions with the filter function to filter elements in a sequence.

Example

fun isGreaterThanThree(x: Int): Boolean {
    return x > 3
}

fun main() {
    val numbers = sequenceOf(1, 2, 3, 4, 5)
    val filteredNumbers = numbers.filter(::isGreaterThanThree)
    println(filteredNumbers.toList()) // Output: [4, 5]
}

Output:

[4, 5]

Chaining filter with Other Functions

The filter function can be chained with other sequence functions to perform more complex filtering operations.

Example

fun main() {
    val numbers = sequenceOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val result = numbers.filter { it % 2 == 0 }
                        .map { it * 2 }
                        .filter { it > 10 }
    println(result.toList()) // Output: [12, 16, 20]
}

Output:

[12, 16, 20]

Real-World Use Case

Filtering User Data

In real-world applications, the filter function can be used to filter user data based on specific criteria.

Example

data class User(val id: Int, val name: String, val isActive: Boolean)

fun main() {
    val users = sequenceOf(
        User(1, "Alice", true),
        User(2, "Bob", false),
        User(3, "Charlie", true)
    )

    val activeUsers = users.filter { it.isActive }
    println(activeUsers.toList()) // Output: [User(id=1, name=Alice, isActive=true), User(id=3, name=Charlie, isActive=true)]
}

Output:

[User(id=1, name=Alice, isActive=true), User(id=3, name=Charlie, isActive=true)]

Conclusion

The filter function in Kotlin provides used for selecting elements from a sequence based on a given condition. By understanding and using the filter function, you can efficiently process and manage data in your Kotlin applications, making them more flexible and responsive.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top