Set 集合
特点:
- 无序的
- 不重复
- 需要显示声明Set,看起来像Array
let testSet1: Set = [1,3,5,7,9]
let testSet2: Set = [1,2,3,4,9]// [2,4,6,8,10]
let testSet3: Set = [2,4,6,8,10]// [2,4,6,8,10]
print(testSet1.contains(3))
print(testSet1 == testSet2)
print(testSet3.isSubset(of: testSet2)) // 判断是不是另一个的儿子(子集,可以完全相同)
print(testSet3.isStrictSubset(of: testSet2)) // 判断是不是另一个的真儿子(真子集,不能完全相同)
print(testSet2.isSuperset(of: testSet1)) // 判断是不是另一个的老爹(可以完全相同)
print(testSet1.isDisjoint(with: testSet3)) // 判断2个集合的元素是否完全不同
print(testSet1.union(testSet3)) // 合并
print(testSet1.intersection(testSet2)) // 子集
print(testSet1.symmetricDifference(testSet2)) // 交集外的元素 [7, 5, 4, 2] ,正好等于下面2个的和
print(testSet1.subtracting(testSet2)) // 判断我在另一个集合里没有的元素 [7,5]
print(testSet2.subtracting(testSet1)) // 判断我在另一个集合里没有的元素 [2,4]
其他操作:
let sum1 = testSet1.reduce(0, +)
print(sum1) // 25
let testStrings = testSet1.map(String.init)
print(testStrings) // ["1", "9", "7", "3", "5"]
let stringToInt = testStrings.map(Int.init).map({$0!}) // 已知可以强制解包
print(stringToInt) // [1, 9, 7, 3, 5]
let testSet4 = testSet1.filter({$0 > 2})
print(testSet4) // [3, 5, 9, 7]