Kotlin List.distinctBy()
The List.distinctBy() function in Kotlin is used to return a list containing only the elements from the original list having distinct keys produced by the given selector function.
Syntax
fun <T, K> Iterable<T>.distinctBy(selector: (T) -> K): List<T>
The function takes a selector function that is applied to each element, and the distinct elements are determined based on the keys produced by this function.
Parameter | Description |
---|---|
T | The type of elements in the list. |
K | The type of keys produced by the selector function. |
selector | The function that produces keys used to determine distinct elements. |
T
is the type of elements in the list.
Example 1: Basic Usage of List.distinctBy()
Filter a list of names based on the first character to get distinct initials.
Kotlin Program
fun main() {
val names = listOf("Alice", "Bob", "Charlie", "David", "Eva", "Eleanor")
val distinctInitials = names.distinctBy { it.first() }
println(distinctInitials)
}
Output
[Alice, Bob, Charlie]
This example uses the distinctBy
function to filter the list of names based on the first character, resulting in a list of distinct initials.
Example 2: Using List.distinctBy() with Custom Objects
Filter a list of custom objects based on a property to get distinct values.
Kotlin Program
data class Person(val id: Int, val name: String)
fun main() {
val people = listOf(
Person(1, "Alice"),
Person(2, "Bob"),
Person(3, "Alice"),
Person(4, "Charlie")
)
val distinctNames = people.distinctBy { it.name }
println(distinctNames)
}
Output
[Person(id=1, name=Alice), Person(id=2, name=Bob), Person(id=4, name=Charlie)]
This example uses the distinctBy
function to filter a list of custom objects based on the name
property, resulting in a list of distinct names.
Summary
The List.distinctBy() function in Kotlin is a convenient way to obtain a list of distinct elements based on a key extracted by a selector function. It is useful when you want to filter a list and retain only the elements with distinct properties.