•
Kotlin의 컬렉션 패키지에는 교집합 찾기, 컬렉션 병합 또는 컬렉션에서 다른 컬렉션을 빼는 등의 연산을 위한 확장 함수가 포함되어 있다.
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]
Kotlin
복사
•
두 컬렉션을 하나로 병합하려면 union() 함수를 사용한다.
•
이는 중위 표기법(a union b)으로도 사용할 수 있다.
•
순서가 있는 컬렉션에서는 피연산자의 순서가 중요하다.
•
결과 컬렉션에서는 첫 번째 피연산자의 요소가 두 번째 피연산자의 요소보다 앞에 온다.
val numbers = setOf("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]
Kotlin
복사
•
두 컬렉션의 교집합(두 컬렉션에 모두 있는 요소)을 찾으려면 intersect() 함수를 사용한다.
•
다른 컬렉션에 없는 컬렉션의 요소를 찾으려면 substract() 함수를 사용한다.
•
두 함수 모두 중위표기법으로 호출할 수 있다.
val numbers = setOf("one", "two", "three")
val numbers2 = setOf("three", "four")
// 차이를 병합
println((numbers - numbers2) union (numbers2 - numbers))
// [one, two, four]
Kotlin
복사
•
두 컬렉션의 교집합이 아닌 요소를 찾으려면 union() 함수를 사용할 수 있다.
•
이 연산(대칭 차집합이라고도 함)은 두 컬렉션 간의 차이를 계산하고 그 결과를 병합하여 수행할 수 있다.
val list1 = listOf(1, 1, 2, 3, 5, 8, -1)
val list2 = listOf(1, 1, 2, 2, 3, 5)
// 두 리스트의 교집합 결과는 Set
println(list1 intersect list2)
// [1, 2, 3, 5]
// 동일한 요소는 하나로 병합
println(list1 union list2)
// [1, 2, 3, 5, 8, -1]
Kotlin
복사
•
union(), intersect(), substract() 함수를 List에도 적용할 수 있다.
•
하지만 그 결과는 항상 Set이다.
•
결과에서는 모든 중복 요소가 하나로 병합되고 인덱스 접근은 사용할 수 없다.