Функция intersect
Функция intersect
возвращает новую коллекцию, содержащую только те элементы,
которые присутствуют в обеих исходных коллекциях. Функция работает с любыми типами,
реализующими интерфейс Iterable
. Результат всегда возвращается в виде Set
.
Синтаксис
infix fun <T> Iterable<T>.intersect(other: Iterable<T>): Set<T>
Пример
Найдем пересечение двух списков:
val list1 = listOf(1, 2, 3, 4, 5)
val list2 = listOf(3, 4, 5, 6, 7)
val res = list1.intersect(list2)
println(res)
Результат выполнения кода:
Set<Int> [3, 4, 5]
Пример
Найдем пересечение двух массивов:
val arr1 = arrayOf('a', 'b', 'c', 'd')
val arr2 = arrayOf('c', 'd', 'e', 'f')
val res = arr1.intersect(arr2)
println(res)
Результат выполнения кода:
Set<Char> ['c', 'd']
Пример
Найдем пересечение двух множеств:
val set1 = setOf("apple", "banana", "orange")
val set2 = setOf("banana", "orange", "grape")
val res = set1.intersect(set2)
println(res)
Результат выполнения кода:
Set<String> ["banana", "orange"]
Пример
Использование инфиксной нотации:
val numbers1 = listOf(10, 20, 30, 40)
val numbers2 = listOf(20, 30, 50, 60)
val res = numbers1 intersect numbers2
println(res)
Результат выполнения кода:
Set<Int> [20, 30]
Пример
Пересечение коллекций с дубликатами:
val listWithDupes = listOf(1, 2, 2, 3, 3, 3)
val otherList = listOf(2, 3, 4)
val res = listWithDupes.intersect(otherList)
println(res)
Результат выполнения кода:
Set<Int> [2, 3]
Для каких типов коллекций работает
Функция intersect
работает со следующими типами коллекций:
Array
- массивыList
- спискиSet
- множестваMutableList
- изменяемые спискиMutableSet
- изменяемые множества- Любые другие типы, реализующие
Iterable
Для Map
функция intersect
не работает напрямую,
но можно использовать пересечение ключей или значений:
val map1 = mapOf("a" to 1, "b" to 2, "c" to 3)
val map2 = mapOf("b" to 2, "c" to 4, "d" to 5)
val commonKeys = map1.keys.intersect(map2.keys)
println(commonKeys)
Результат выполнения кода:
Set<String> ["b", "c"]