🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
The groupBy function in Kotlin is used to group elements of a collection based on a given key selector function. This function belongs to the Kotlin standard library and provides a convenient way to group elements into a map, where the keys are the results of the key selector function and the values are lists of elements that correspond to each key.
Table of Contents
- Introduction
groupByFunction Syntax- Understanding
groupBy - Examples
- Basic Usage
- Grouping a List of Strings
- Grouping with Custom Key Selector
- Real-World Use Case
- Conclusion
Introduction
The groupBy function allows you to group elements of a collection (such as a list) based on a given key selector function. The resulting map contains keys that are the results of the key selector function and values that are lists of elements corresponding to each key. This is useful for scenarios where you need to categorize or partition elements based on specific criteria.
groupBy Function Syntax
The syntax for the groupBy function is as follows:
fun <T, K> Iterable<T>.groupBy(keySelector: (T) -> K): Map<K, List<T>>
Parameters:
keySelector: A lambda function that takes an element of the original collection as input and returns a key for grouping.
Returns:
- A map where the keys are the results of the key selector function and the values are lists of elements that correspond to each key.
Understanding groupBy
The groupBy function iterates over each element in the original collection, applies the key selector function to it, and groups the elements into a map based on the keys generated by the key selector. Each key in the map corresponds to a list of elements that share the same key.
Examples
Basic Usage
To demonstrate the basic usage of groupBy, we will group a list of integers based on their parity (even or odd).
Example
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val groupedByParity = numbers.groupBy { it % 2 == 0 }
println("Grouped by parity: $groupedByParity")
}
Output:
Grouped by parity: {false=[1, 3, 5], true=[2, 4, 6]}
Grouping a List of Strings
This example shows how to use groupBy to group a list of strings by their first character.
Example
fun main() {
val fruits = listOf("apple", "banana", "cherry", "apricot", "blueberry")
val groupedByFirstChar = fruits.groupBy { it.first() }
println("Grouped by first character: $groupedByFirstChar")
}
Output:
Grouped by first character: {a=[apple, apricot], b=[banana, blueberry], c=[cherry]}
Grouping with Custom Key Selector
This example demonstrates how to use groupBy with a custom key selector to group a list of objects.
Example
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 30),
Person("David", 25)
)
val groupedByAge = people.groupBy { it.age }
println("Grouped by age: $groupedByAge")
}
Output:
Grouped by age: {30=[Person(name=Alice, age=30), Person(name=Charlie, age=30)], 25=[Person(name=Bob, age=25), Person(name=David, age=25)]}
Real-World Use Case
Grouping Orders by Status
In real-world applications, the groupBy function can be used to group orders by their status, allowing you to categorize and process orders based on their current state.
Example
data class Order(val id: Int, val amount: Double, val status: String)
fun main() {
val orders = listOf(
Order(1, 100.0, "Shipped"),
Order(2, 150.0, "Pending"),
Order(3, 200.0, "Shipped"),
Order(4, 80.0, "Pending"),
Order(5, 120.0, "Delivered")
)
val groupedByStatus = orders.groupBy { it.status }
println("Grouped by status: $groupedByStatus")
}
Output:
Grouped by status: {Shipped=[Order(id=1, amount=100.0, status=Shipped), Order(id=3, amount=200.0, status=Shipped)], Pending=[Order(id=2, amount=150.0, status=Pending), Order(id=4, amount=80.0, status=Pending)], Delivered=[Order(id=5, amount=120.0, status=Delivered)]}
Conclusion
The groupBy function in Kotlin is a powerful and convenient way to group elements of a collection based on a specified key selector function. It allows you to categorize and partition elements, making it useful for various applications, including data processing, categorization, and organization.
By understanding and using the groupBy function, you can effectively manage and group collections in your Kotlin applications.
Comments
Post a Comment
Leave Comment