Swift 中的集合类型有哪些?Array、Set 和 Dictionary 有什么区别和适用场景?
Swift 中的集合类型有哪些?Array、Set 和 Dictionary 有什么区别和适用场景?Swift 提供了三种主要的集合类型:Array(数组)、Set(集合)和 Dictionary(字典)。每种集合类型都有其特定的用途和特点。Array(数组):有序集合可以包含重复元素可以通过索引访问元素示例: var numbers = [1, 2, 3, 4, 5] numbers.append(6) numbers[0] = 10 let first = numbers.first // Optional(10) let count = numbers.count // 6Array 的常用操作:var array = [1, 2, 3]// 添加元素array.append(4)array.insert(0, at: 0)// 删除元素array.remove(at: 0)array.removeLast()// 查找元素let index = array.firstIndex(of: 2)// 排序array.sort()let sorted = array.sorted()// 遍历for (index, element) in array.enumerated() { print("\(index): \(element)")}Set(集合):无序集合不能包含重复元素元素必须是可哈希的示例: var set: Set<Int> = [1, 2, 3, 4, 5] set.insert(6) set.contains(3) // true let count = set.count // 6Set 的常用操作:var set1: Set<Int> = [1, 2, 3, 4, 5]var set2: Set<Int> = [4, 5, 6, 7, 8]// 集合操作let union = set1.union(set2) // {1, 2, 3, 4, 5, 6, 7, 8}let intersection = set1.intersection(set2) // {4, 5}let difference = set1.subtracting(set2) // {1, 2, 3}let symmetricDifference = set1.symmetricDifference(set2) // {1, 2, 3, 6, 7, 8}// 检查关系set1.isSubset(of: set2) // falseset1.isSuperset(of: set2) // falseset1.isDisjoint(with: set2) // false// 添加和删除set1.insert(6)set1.remove(1)Dictionary(字典):无序键值对集合键必须是唯一的键必须是可哈希的示例: var dict = ["name": "John", "age": "30"] dict["email"] = "john@example.com" dict["name"] = "Jane" let name = dict["name"] // Optional("Jane") let count = dict.count // 3Dictionary 的常用操作:var dict = ["name": "John", "age": "30"]// 添加和更新dict["email"] = "john@example.com"dict.updateValue("Jane", forKey: "name")// 删除dict.removeValue(forKey: "age")// 访问if let name = dict["name"] { print(name)}// 遍历for (key, value) in dict { print("\(key): \(value)")}// 获取所有键和值let keys = Array(dict.keys)let values = Array(dict.values)Array、Set 和 Dictionary 的区别:有序性:Array:有序Set:无序Dictionary:无序(键值对)重复元素:Array:可以包含重复元素Set:不能包含重复元素Dictionary:键必须唯一,值可以重复访问方式:Array:通过索引访问Set:通过成员检查访问Dictionary:通过键访问性能:Array:插入和删除 O(n),访问 O(1)Set:插入、删除、查找 O(1)Dictionary:插入、删除、查找 O(1)适用场景:使用 Array 的场景:需要保持元素顺序允许重复元素需要通过索引访问元素示例:待办事项列表、历史记录使用 Set 的场景:需要确保元素唯一性需要快速查找元素是否存在需要集合操作(并集、交集等)示例:标签、用户 ID 集合使用 Dictionary 的场景:需要通过键快速查找值需要存储键值对数据键是唯一的示例:用户信息、配置选项最佳实践:根据需求选择合适的集合类型使用 Array 保持顺序使用 Set 确保唯一性使用 Dictionary 存储键值对注意集合的性能特性