在Swift编程语言中,集合类型Set
用于存储唯一且无序的相同类型元素。它提供了一种高效的方式去追踪一组特定类型的唯一项目,而不关心它们的插入顺序。当你需要确保集合中的元素不会重复,并且不需要保持元素的插入顺序时,可以使用Set
。
以下是Swift中Set
的一些关键特点和用法:
创建Set
// 创建并初始化一个空Set
var emptySet: Set<Int> = []
// 或者更简洁地创建一个空Set
var emptySet = Set<String>()
// 直接通过一组元素创建Set
var numbersSet = Set([1, 2, 3, 4, 5])
// 或者使用数组字面量语法
let stringSet: Set<String> = ["apple", "banana", "cherry"]
// 注意:Set中的元素必须遵循Hashable协议,这意味着它们能够被哈希化和比较。
添加和移除元素
numbersSet.insert(6)
numbersSet.remove(3)
// 检查Set是否包含某个元素
if numbersSet.contains(5) {
// ...
}
合并和差集等操作
let setA = Set(["a", "b", "c"])
let setB = Set(["b", "c", "d"])
// 合并两个Set
let unionSet = setA.union(setB)
// 取交集
let intersectionSet = setA.intersection(setB)
// 取差集(setA中有但setB中没有的元素)
let differenceSetAfromB = setA.subtracting(setB)
遍历Set
for number in numbersSet {
print(number)
}
其他特性
Set
内部采用哈希表实现,因此查找、添加和删除元素的时间复杂度接近O(1)。- Set中的元素自动按照其哈希值排序,但是这个顺序不能依赖,因为每次执行程序可能会有所不同。
- 在Objective-C环境中,Swift的
Set
类型可以桥接到Foundation框架下的NSSet
类。