От автора code.mu: РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
416 of 1310 menu

Функция distinct

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

Синтаксис

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

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

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

  • Array - массивы любых типов
  • List - списки (List, MutableList)
  • Set - множества (Set, MutableSet), хотя для множеств это избыточно
  • Iterable - любые итерируемые коллекции

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

  • Map - для карт используйте distinct на keys или values

Пример с Set

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

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

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

List<Int> [1, 2, 3]

Пример с Map

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

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

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

List<Int> [1, 2, 3]

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

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