Spec-Zone.ru › Kotlin 2

Операции с множествами

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

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

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

    // output according to the order
    println(numbers union setOf("four", "five"))
    // [one, two, three, four, five]
    println(setOf("four", "five") union numbers)
    // [four, five, one, two, three]
//sampleEnd
}

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

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

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

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

fun main() {
//sampleStart
    val numbers = setOf("one", "two", "three")
    val numbers2 = setOf("three", "four")

    // merge differences 
    println((numbers - numbers2) union (numbers2 - numbers))
    // [one, two, four]
//sampleEnd
}

Функции union(), intersect() и subtract() можно применять и к спискам. Однако результатом всегда будет Set. В этом результате все повторяющиеся элементы объединяются в один, а доступ по индексу недоступен:

fun main() {
//sampleStart
    val list1 = listOf(1, 1, 2, 3, 5, 8, -1)
    val list2 = listOf(1, 1, 2, 2, 3, 5)

    // result of intersecting two lists is a Set
    println(list1 intersect list2)
    // [1, 2, 3, 5]

    // equal elements are merged into one
    println(list1 union list2)
    // [1, 2, 3, 5, 8, -1]
//sampleEnd
}
12 августа 2026
Операции со спискамиОперации с отображениями

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/set-operations.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API