Filtering and Mapping in Kotlin Collections


Kotlin provides powerful functions for filtering and mapping elements within collections. These operations are essential for data transformation and manipulation. In this guide, we'll explore how to filter and map data in Kotlin collections.


Filtering Elements

Kotlin's `filter` function allows you to create a new collection containing only the elements that meet a certain condition. Here's a simple example:

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNumbers = numbers.filter { it % 2 == 0 }
println("Even numbers: $evenNumbers")

In this example, we filter even numbers from a list of integers using a lambda expression as the filtering condition.


Mapping Elements

The `map` function in Kotlin allows you to create a new collection by applying a transformation to each element. Here's an example:

val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println("Squared numbers: $squaredNumbers")

In this example, we use the `map` function to square each number in the list, resulting in a new list of squared numbers.


Chaining Operations

You can chain filtering and mapping operations for more complex transformations:

val words = listOf("apple", "banana", "cherry", "date", "elderberry")
val result = words
.filter { it.length > 5 }
.map { it.toUpperCase() }
println("Filtered and mapped words: $result")

In this example, we first filter words longer than five characters and then map them to uppercase.


Using Filter and Map with Custom Classes

You can filter and map elements in custom classes as well:

data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35))
val names = people.map { it.name }
println("Names of people: $names")

In this example, we map the names of people from a list of custom `Person` objects.


Conclusion

Filtering and mapping are fundamental operations when working with collections in Kotlin. They allow you to transform and refine data efficiently. Whether you're working with standard data types or custom classes, Kotlin's collection operations simplify the process of data manipulation.


Happy coding!