Set 集合
概念
和数组非常类型,没有顺序,统一类型,内容不能重复
声明
Set
方法传入一个数组,会自动去除重复的内容
swift
var s = Set([1, 2, 2, 3, 3, 4])
print(s) // [2, 3, 4, 1]
是否为空
isEmpty
判断是否为空
swift
var s = Set([1, 2, 2, 3, 3, 4])
print(s.isEmpty) // false
获取长度
count
获取长度
swift
var s = Set([1, 2, 2, 3, 3, 4])
print(s.count) // 4
插入元素
insert
方法可插入元素,返回两个值,第一个是一个布尔值,表示是否插入成功,第二个值的插入的内容
如果已经存在的内容就会插入失败
swift
var a = Set(["苹果", "香蕉", "栗子"])
var (c, v) = a.insert("苹果")
print(c, v) // false 苹果
update
方法可以强行插入
swift
var a = Set(["苹果", "香蕉", "栗子"])
a.update(with: "橘子")
print(a) // ["栗子", "橘子", "香蕉", "苹果"]
删除元素
remove
可以删除指定的元素
swift
var a = Set(["苹果", "香蕉", "栗子"])
a.remove("苹果")
print(a) // ["香蕉", "栗子"]
removeAll
可以删除全部元素
swift
var a = Set(["苹果", "香蕉", "栗子"])
a.removeAll()
print(a) // []
布尔运算
union
方法可以合并两个集合
swift
var a = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])
print(a.union(b)) // ["西瓜", "栗子", "香蕉", "橙子", "苹果"]
subtracting
方法可以减去相同的元素
swift
var a = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])
print(a.subtracting(b)) // ["苹果", "栗子"]
intersection
方法可以获取相交的部分
swift
var a = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])
print(a.intersection(b)) // ["香蕉"]
symmetricDifference
方法可以获取除去相交之外的部分
swift
var a = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])
print(a.symmetricDifference(b)) // ["橙子", "栗子", "西瓜", "苹果"]
超集喝子集
isSubset
方法获取一个集合是否为目标参数的子集
isSuperset
方法获取一个集合是否为目标参数的超集
swift
var a = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉"])
print(b.isSubset(of: a)) // a 里有香蕉,所以 b 是 a 的子集
print(a.isSuperset(of: b)) // a 里有香蕉,所以 a 是 b 的超集
随机数
randomElement
方法获取集合中的随机数
swift
var a = Set(["苹果", "香蕉", "栗子"])
print(a.randomElement() ?? "")