swift 集合 set 及常用方法
1. 创建set集合
// 创建set var set: set= [1, 2, 3] var set2 = set(arrayliteral: 1, 2, 3)
2. 获取元素
// set 获取最小值 set.min() // 获取第一个元素,顺序不定 set[set.startindex] set.first // 通过下标获取元素,只能向后移动,不能向前 // 获取第二个元素 set[set.index(after: set.startindex)] // 获取某个下标后几个元素 set[set.index(set.startindex, offsetby: 2)]
3. 常用方法
// 获取元素个数 set.count // 判断空集合 if set.isempty { print("set is empty") } // 判断集合是否包含某个元素 if (set.contains(3)) { print("set contains 3") } // 插入 set.insert(0) // 移除 set.remove(2) set.removefirst() // 移除指定位置的元素,需要用 ! 拆包,拿到的是 optional 类型,如果移除不存在的元素,exc_bad_instruction set.remove(at: set.firstindex(of: 1)!) set.removeall() var setstr1: set= ["1", "2", "3", "4"] var setstr2: set = ["1", "2", "5", "6"] // set 取交集 setstr1.intersection(setstr2) // {"2", "1"} // set 取交集的补集 setstr1.symmetricdifference(setstr2) // {"4", "5", "3", "6"} // set 取并集 setstr1.union(setstr2) // {"2", "3", "1", "4", "6", "5"} // set 取相对补集(差集),a.subtract(b),即取元素属于 a,但不属于 b 的元素集合 setstr1.subtract(setstr2) // {"3", "4"} var eqset1: set = [1, 2, 3] var eqset2: set = [3, 1, 2] // 判断 set 集合相等 if eqset1 == eqset2 { print("集合中所有元素相等时,两个集合才相等,与元素的顺序无关") } let set3: set = [0, 1] let set4: set = [0, 1, 2] // 判断子集 set3.issubset(of: set4) // set3 是 set4 的子集,true set3.isstrictsubset(of: set4) // set3 是 set4 的真子集,true // 判断超集 set4.issuperset(of: set3) // set4 是 set3 的超集,true set4.isstrictsuperset(of: set3) // set4 是 set3 的真超集,true
4. set 遍历
// 遍历元素 for ele in set4 { print(ele) } // 遍历集合的枚举 for ele in set4.enumerated() { print(ele) } // 下标遍历 for index in set4.indices { print(set4[index]) } // 从小到大排序后再遍历 for ele in set4.sorted(by: <) { print(ele) }
github 源码: