集合 Set 是一个无序不重复的数据集
1. 集合的显式声明
var emptySet:Set<Int> = []
var emptySet2 = Set<Int>()
2. 集合的操作
var emptySet3:Set<String> = ["a","b"]
// 统计集合内所有的值数量
emptySet3.count
// 判断集合是否为空值
emptySet3.isEmpty
// .contains( ) 方法 匹配集合中是否有这个值
emptySet3.contains("a")
// .first 获取集合内"第一个"值,因为集合是无序的所有这个值是随机的
emptySet3.first
// 遍历集合内所有的值
for i in emptySet3 {
print(i)
}
// .insert( )方法 添加一个值
emptySet3.insert("c")
// .remove( ) 方法 删除一个值
emptySet3.remove("a")
// .removeAll ( ) 方法 删除所有值
emptySet3.removeAll( )
3. 交集
union 不改变集合
unionInplace 改变结合
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["A","B","C"]
// 并集后ua的值并没有被改变
ua.union(ub) //{"b", "B", "a", "A", "C", "c"}
ua //{"b", "a", "c"}
// 并集后的值赋给了ua
ua.unionInPlace(ub) //{"b", "B", "a", "A", "C", "c"}
ua //{"b", "B", "a", "A", "C", "c"}
4. 并集
intersect 不改变集合
intersectInPlace 改变结合
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["A","B","c"]
//并集找出相同的值 并集后并没有改变ua
ua.intersect(ub) // {"c"}
ua // {"b", "a", "c"}
//并集找出相同的值 并把这个并集后的值赋值给ua
ua.intersectInPlace(ub) // {"c"}
ua // {"c"}
5. 减法
subtract 不改变集合
subtractInPlace 改变集合
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["A","B","c"]
// subtract 左边减去右边 不改变左边的值
ua.subtract(ub) // {"b", "a"}
ua // {"b", "a", "c"}
// subtractInPlace 左边减去右边 改变左边的值
ua.subtractInPlace(ub) // {"b", "a"}
ua // {"b", "a"}
6. 亦或
exclusiveOr 不改变集合
exclusiveOrInPlace 改变集合
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["A","B","c"]
// 找出左右都包含的值减去 不改变ua值
ua.exclusiveOr(ub) // {"b", "B", "a", "A"}
ua // {"b", "a", "c"}
// 找出左右都包含的值减去 改变ua值
ua.exclusiveOrInPlace(ub) // {"b", "B", "a", "A"}
ua // {"b", "B", "a", "A"}
7. 子集
isSubsetOf 判断 B是否为A的子集
isStrictSubsetOf 判断B是否为A的真子集
isSupersetOf 判断A是否为B的超集
isStrictSupersetOf 判断A是否为B的真超集
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["c"]
// 判断ub是否是ua的子集
ub.isSubsetOf(ua) // true
ub.isStrictSubsetOf(ua) // true
// 判断ua是否是ub的超级
ua.isSupersetOf(ub) // true
ua.isStrictSupersetOf(ub) // true
8. 相离
isDisjointWith 判断A和B是否没有相交的集合 即"相离"
var ua:Set<String> = ["a","b","c"]
var ub:Set<String> = ["A","B","C"]
ua.isDisjointWith(ub)