Операции с множествами
Пакет коллекций 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
}
© 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