Шаг 122.
Основы Kotlin.
Списки и множества. Множества. Преобразование коллекций

    На этом шаге мы рассмотрим функции, используемые для этих целей.

    В NyetHack вы создали изменяемое множество уникальных имен посетителей, передавая элементы из списка в множество один за другим. Также преобразовать список в множество и обратно можно с помощью функций toSet() и toList() (или их изменяемых вариантов: toMutableSet() и toMutableList()). Распространенный трюк - вызвать toSet(), чтобы отбросить неуникальные элементы в списке. (Поэкспериментируйте в REPL.)

listOf("Eli Baggins", "Eli Baggins", "Eli Ironfoot").toSet()

[Eli Baggins, Eli Ironfoot]


Рис.1. Перевод списка во множество (REPL)

    Чтобы получить возможность доступа по индексу после удаления дубликатов, снова преобразуйте множество в список. Листинг 10.28. Преобразование множества в список (REPL)

val patrons = listOf("Eli Baggins", "Eli Baggins", "Eli Ironfoot")
    .toSet()
    .toList()

[Eli Baggins, Eli Ironfoot] 

patrons[0]

Eli Baggins


Рис.2. Преобразование множества в список (REPL)

    Необходимость удалять дубликаты и использовать доступ по индексу очень распространена, поэтому Kotlin предоставляет функцию с именем distinct(), которая внутренне вызывает toSet() и toList().

val patrons = listOf("Eli Baggins", "Eli Baggins", "Eli Ironfoot").distinct()

[Eli Baggins, Eli Ironfoot] 

patrons[0]

Eli Baggins


Рис.3. Вызов distinct() (REPL)

    Множества полезны для представления наборов данных с уникальными элементами. В следующих шагах мы закончим обзор типов коллекций в языке Kotlin, познакомившись с ассоциативными массивами.

    На следующем шаге мы рассмотрим типы массивов.




Предыдущий шаг Содержание Следующий шаг