Set 是 Swift 中的一个集合类型,用来存储 唯一且无序 的元素。与数组不同,Set 的元素是无序的,但查找和插入操作非常高效。以下是如何使用 Set 的一些例子和基本操作。
创建一个 Set
var availableCurrencies: Set<String> = ["USD", "EUR", "JPY"]
或者,Swift 可以通过类型推断直接创建:
var availableCurrencies: Set = ["USD", "EUR", "JPY"]
添加元素到 Set
availableCurrencies.insert("CNY") // 添加人民币
删除元素
availableCurrencies.remove("JPY") // 删除日元
如果尝试删除的元素不在 Set 中,不会发生错误。
检查是否包含某个元素
Set 提供快速查找功能,用 contains 方法检查是否存在某个元素:
if availableCurrencies.contains("USD") {
print("支持美元")
}
遍历 Set
可以像数组一样使用 for-in 循环遍历 Set 中的所有元素:
for currency in availableCurrencies {
print("支持的货币: \(currency)")
}
注意,Set 是无序的,所以元素的打印顺序可能与插入顺序不同。
Set 的其他操作
取并集(Union): 合并两个 Set,得到一个包含所有元素的新 Set。
let set1: Set = ["USD", "EUR"]
let set2: Set = ["JPY", "CNY"]
let unionSet = set1.union(set2) // ["USD", "EUR", "JPY", "CNY"]
取交集(Intersection): 得到两个 Set 中都有的元素。
let set1: Set = ["USD", "EUR", "JPY"]
let set2: Set = ["JPY", "CNY"]
let intersectionSet = set1.intersection(set2) // ["JPY"]
取差集(Subtracting): 从一个 Set 中移除另一个 Set 里有的元素。
let set1: Set = ["USD", "EUR", "JPY"]
let set2: Set = ["JPY"]
let differenceSet = set1.subtracting(set2) // ["USD", "EUR"]
构造函数创建Set
前面的创建方式为字面量创建:
使用 [] 可以直接创建一个 Set,但需要显式声明类型是 Set,例如:
var availableCurrencies: Set<String> = ["USD", "EUR", "JPY"]
通过构造函数创建:
如果你已经有一个数组,并希望将其转换为 Set 类型,可以使用 Set 构造函数,例如:
let currencyArray = ["USD", "EUR", "USD", "JPY"]
let availableCurrencies = Set(currencyArray)
// 结果: ["USD", "EUR", "JPY"]
例如,你需要提取一个汇率来源的可用币种字段,你可以考虑使用
// 提取可用的币种符号
let availableCurrencies = Set(forexData.records.map { $0.vrtCode })
利用 map 函数遍历所有的 records,提取出 vrtCode,并将其收集到 Set 中,这样可以自动去除重复的币种符号。