Операции со множествами
В пакете Kotlin collections содержатся функции-расширения для популярных операций со множествами: нахождения пересечений, объединения или вычитания коллекций друг из друга.
Для объединения двух коллекций в одну используйте функцию union(). Её можно использовать в инфиксной форме a union b. Обратите внимание, что для упорядоченных коллекций порядок операндов важен: в результирующей коллекции элементы первого операнда идут перед элементами второго.
Для нахождения пересечения между двумя коллекциями (элементы, присутствующие в обеих), используйте intersect(). Для нахождения элементов коллекции, отсутствующих в другой коллекции, используйте subtract(). Обе эти функции также можно вызывать в инфиксной форме, например, a intersect b.
fun main() {
//sampleStart
val numbers = setOf("one", "two", "three")
println(numbers union setOf("four", "five"))
println(setOf("four", "five") union numbers)
println(numbers intersect setOf("two", "one"))
println(numbers subtract setOf("three", "four"))
println(numbers subtract setOf("four", "three")) // same output
//sampleEnd
}
Вы также можете применить union, intersect, и subtract к List. Однако, их результат всегда является Set, даже для списков. В этом результате все дублирующиеся элементы объединяются в один, и доступ к элементам по индексу недоступен.
fun main() {
//sampleStart
val list1 = listOf(1, 1, 2 ,3, 5, 8, -1)
val list2 = listOf(1, 1, 2, 2 ,3, 5)
println(list1 intersect list2) // result on two lists is a Set
println(list1 union list2) // equal elements are merged into one
//sampleEnd
}
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/set-operations.html