Swift_集合(Set)

作者: GavinKang | 来源:发表于2017-12-11 11:03 被阅读76次

    用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次 时可以使用集合而不是数组。相对于数组,集合不用关心序列,存储和查找更快捷

    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
    

    相关文章

      网友评论

        本文标题:Swift_集合(Set)

        本文链接:https://www.haomeiwen.com/subject/rjxiixtx.html