Set: специфичные операции

Стандартная библиотека Kotlin включает в себя функции-расширения для популярных операций с множествами (Set): поиск пересечений, слияние или вычитание коллекций друг из друга.

Чтобы объединить две коллекции в одну, используйте функцию union(). Её также можно использовать в инфиксной форме - a union b. Обратите внимание, что для отсортированных коллекций важен порядок операндов: в результирующей коллекции элементы первого операнда идут перед элементами второго.

Чтобы найти пересечения между двумя коллекциями (другими словами поиск элементов, присутствующих в обеих коллекциях), используйте функцию intersect(). И наоборот, для поиска элементов, отсутствующих в другой коллекции, используйте subtract(). Обе функции могут быть вызваны в инфиксной форме, например, a intersect b.

fun main() {
    val numbers = setOf("one", "two", "three")

    println(numbers union setOf("four", "five")) // [one, two, three, four, five]
    println(setOf("four", "five") union numbers) // [four, five, one, two, three]

    println(numbers intersect setOf("two", "one")) // [one, two]
    println(numbers subtract setOf("three", "four")) // [one, two]
    println(numbers subtract setOf("four", "three")) // [one, two]
}

Обратите внимание, что операции с Set также применимы и к List. Однако результатом операций всё равно будет Set, поэтому все повторяющиеся элементы будут удалены.