9.1.1.9.5 集合特有的操作
原文链接: https://kotlinlang.org/docs/set-operations.html
9.1.1.9.5 集合特有的操作
Kotlin 的集合包中包含用于对集合进行常见操作的扩展函数:求交集、合并,或从一个集合中减去另一个集合。
要把两个集合合并为一个,请使用 union() 函数。它可以用中缀形式 a union b 调用。注意,对于有序集合,操作数的顺序很重要。在结果集合中,第一个操作数的元素排在第二个操作数的元素之前:
1
2
3
4
5
6
7
8
9
| fun main() {
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]
}
|
要求两个集合的交集(即同时存在于两者中的元素),请使用 intersect() 函数。要找出存在于一个集合、但不存在于另一个集合中的元素,请使用 subtract() 函数。这两个函数也都可以用中缀形式调用,例如 a intersect b:
1
2
3
4
5
6
7
8
9
10
11
| fun main() {
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]
}
|
要找出存在于两个集合之一、但不属于它们的交集的元素,你也可以使用 union() 函数。对于这种操作(称为对称差集),请计算两个集合之间的差集并合并结果:
1
2
3
4
5
6
7
8
| fun main() {
val numbers = setOf("one", "two", "three")
val numbers2 = setOf("three", "four")
// 合并差集
println((numbers - numbers2) union (numbers2 - numbers))
// [one, two, four]
}
|
你也可以把 union()、intersect() 和 subtract() 函数用于列表。不过,它们的结果始终是 Set。在这个结果中,所有重复元素会被合并为一个,并且无法使用索引访问:
1
2
3
4
5
6
7
8
9
10
11
12
| fun main() {
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]
}
|