用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次 时可以使用集合而不是数组。相对于数组,集合不用关心序列,存储和查找更快捷
1-语法
Swift 中的 Set 类型被写为 Set<Element> ,这里的 Element 表示 Set 中允许存储的类型,和数组不同的是,集 合没有等价的简化形式。此外,一个 Set 类型不能从数组字面量中被单独推断出来,因此 Set 类型必须显式声明。下面的例子创建一个称之为 favoriteGenres 的集合来存储 String 类型的值:
// favoriteGenres 被构造成含有三个初始值的集合
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
2-集合操作
除了无序和无重复元素,其用法基本和数组一样,不一样的有:
•使用 intersection(:) ,交集:方法根据两个集合中都包含的值创建的一个新的集合。
• 使用 symmetricDifference(:) ,方法根据在一个集合中但不在两个集合中的值创建一个新的集合。
• 使用 union(:) ,并集:方法根据两个集合的值创建一个新的集合。
• 使用 subtracting(:) 方法根据不在该集合中的值创建一个新的集合。
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sort()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits. intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits. symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
• 使用“是否相等”运算符( == )来判断两个集合是否包含全部相同的值。
• 使用 isSubset(of:) 方法来判断一个集合中的值是否也被包含在另外一个集合中。
• 使用 isSuperset(of:) 方法来判断一个集合中包含另一个集合中所有的值。
• 使用 isStrictSubset(of:) 或者 isStrictSuperset(of:) 方法来判断一个集合是否是另外一个集合的子集合或 者父集合并且两个集合并不相等。
• 使用 isDisjoint(with:) 方法来判断两个集合是否不含有相同的值(是否没有交集)。
let farmAnimals: Set = ["?", "?", "?", "?", "?"]
let cityAnimals: Set = ["?", "?"]
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true
网友评论