Set

Последнее обновление: 02.06.2021

Интерфейс Set представляет неупорядоченный набор объектов, который хранит только уникальные объекты. Интерфейс Set представляет неизменяемый (immutable) набор. Set расширяет интерфейс Collection.

Некоторые методы интерфейса Set:

  • contains(element): возвращает true, если элемент содержится в наборе

  • isEmpty(): возвращает true, если набор пуст

  • minus(element): возвращает новый набор, в котором отсутствует element. При этом исходный набор не изменяется

  • plus(element): возвращает новый набор, в который добавлен element. Исходный набор также не изменяется

Для создания неизменяемого (immutable) набора используется функция setOf().

var numbers: Set<Int> = setOf(5, 6, 7)

Использование Set:

fun main() {
    val items = setOf(1, 2, 3, 4, 5)
    println(items.size)          // 5
    println(items.contains(4))  // true
    println(items.isEmpty())    // false
    println(items.minus(3))     // [1, 2, 4, 5]
    println(items.plus(7))      //  [1, 2, 3, 4, 5, 7]

    for (n in items){ print(n) }    // 1 2 3 4 5
}

Изменяемые коллекции

Изменяемые (mutable) наборы представлены интерфейсом MutableSet, который расширяет интерфейсы Set и MutableCollection.

Для создания изменяемых (mutable) наборов применяется функция mutableSetOf().

val numbers: MutableSet<Int> = mutableSetOf(35, 36, 37)

Интерфейс MutableSet реализуется следующими типами изменяемых наборов:

  • LinkedHashSet: объединяет возможности хеш-таблицы и связанного списка. Создается с помощью функции linkedSetOf().

  • HashSet: представляет хеш-таблицу. Создается с помощью функции hashSetOf().

val numbers1: HashSet<Int> = hashSetOf(5, 6, 7)
val numbers2: LinkedHashSet<Int> = linkedSetOf(25, 26, 27)
val numbers3: MutableSet<Int> = mutableSetOf(35, 36, 37)

Изменение набора с помощью MutableSet:

val numbers: MutableSet<Int> = mutableSetOf(35, 36, 37)
println(numbers.add(2))
println(numbers.addAll(setOf(4, 5, 6)))
println(numbers.remove(36))
    
for (n in numbers){ println(n) }	// 35 37 2 4 5 6
numbers.clear()
Помощь сайту
WebMoney
  • P378451176208
  • Z280152397659
ЮMoney/Яндекс-Деньги
  • 410011174743222
PayPal
  • metanit22@mail.ru
Перевод на карту
  • Номер карты: 4048415020898850