Функция distinct

Функция distinct создает новую коллекцию, содержащую только уникальные элементы из исходной. Все дубликаты удаляются. Функция сохраняет порядок первого вхождения каждого элемента. Работает с коллекциями, содержащими элементы, которые реализуют интерфейс equals для сравнения.

Синтаксис

kotlinfun <T> Array<out T>.distinct(): List<T>
fun <T> Iterable<T>.distinct(): List<T>

Пример

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

kotlinval numbers = listOf(1, 2, 3, 2, 1, 4, 5, 3)
val res = numbers.distinct()
println(res)

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

kotlinList<Int> [1, 2, 3, 4, 5]

Пример

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

kotlinval chars = arrayOf('a', 'b', 'c', 'a', 'd', 'b')
val res = chars.distinct()
println(res)

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

kotlinList<Char> ['a', 'b', 'c', 'd']

Пример

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

kotlinval strings = listOf("abc", "def", "abc", "ghi", "def")
val res = strings.distinct()
println(res)

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

kotlinList<String> ["abc", "def", "ghi"]

Для каких типов коллекций работает

Функция distinct работает со следующими типами коллекций:

Не работает с:

Пример с Set

Применение distinct к множеству:

kotlinval set = setOf(1, 2, 3, 2, 1)
val res = set.distinct()
println(res)

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

kotlinList<Int> [1, 2, 3]

Пример с Map

Для карты можно применить distinct к ключам или значениям:

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 1, "d" to 3)
val uniqueValues = map.values.distinct()
println(uniqueValues)

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

kotlinList<Int> [1, 2, 3]

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

  • функцию distinctBy,
    которая позволяет задать критерий уникальности
  • функцию toSet,
    которая преобразует коллекцию в множество
  • функцию union,
    которая объединяет две коллекции без дубликатов
  • функцию filter,
    которая фильтрует элементы по условию