НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
417 of 1310 menu

Функция distinctBy

Функция distinctBy возвращает коллекцию, содержащую только элементы с уникальными ключами. Ключ для каждого элемента вычисляется с помощью функции-селектора, которая передается в качестве параметра. Если несколько элементов имеют одинаковый ключ, то в результирующую коллекцию попадет только первый из них. Функция работает с массивами Array, списками List, множествами Set и другими типами коллекций.

Импорт

import kotlin.collections.distinctBy

Синтаксис

// Для Iterable inline fun <T, K> Iterable<T>.distinctBy( selector: (T) -> K ): List<T>
// Для Array inline fun <T, K> Array<out T>.distinctBy( selector: (T) -> K ): List<T>

Пример

Получим уникальные элементы списка строк по длине строки:

val list = listOf("apple", "banana", "cherry", "date", "elderberry") val res = list.distinctBy { it.length } println(res)

Результат выполнения кода:

List<String> ["apple", "banana", "date"]

Пример

Получим уникальные элементы массива чисел по первой цифре:

val array = arrayOf(123, 456, 789, 135, 246, 357) val res = array.distinctBy { it.toString().first() } println(res)

Результат выполнения кода:

List<Int> [123, 456, 789]

Пример

Получим уникальные элементы множества по четности числа:

val set = setOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val res = set.distinctBy { it % 2 == 0 } println(res)

Результат выполнения кода:

List<Int> [1, 2]

Пример

Получим уникальные элементы списка объектов по свойству класса:

data class Person(val name: String, val age: Int) val people = listOf( Person("Alice", 25), Person("Bob", 30), Person("Charlie", 25), Person("David", 30) ) val res = people.distinctBy { it.age } println(res)

Результат выполнения кода:

List<Person> [Person(name=Alice, age=25), Person(name=Bob, age=30)]

Смотрите также

  • функцию distinct,
    которая возвращает уникальные элементы без преобразования
  • функцию groupBy,
    которая группирует элементы по ключу
  • функцию map,
    которая преобразует элементы коллекции
  • функцию filter,
    которая фильтрует элементы по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить