美文网首页
swift学习之集合(Set)

swift学习之集合(Set)

作者: Lucky_1122 | 来源:发表于2017-11-09 17:01 被阅读6次

    Set 集合
    创建和初始化一个空集

    var letters = Set<Character>()
    letters.insert("a")
    // letters now contains 1 value of type Character
    letters = []
    // letters is now an empty set, but is still of type Set<Character>
    

    用数组字面值创建一个集合

    var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
    

    访问和修改一个集合

    print("I have \(favoriteGenres.count) favorite music genres.")
    // Prints "I have 3 favorite music genres."
    

    使用Boolean isEmpty属性作为检查count属性是否等于的快捷方式0:

    if favoriteGenres.isEmpty {
        print("As far as music goes, I'm not picky.")
    } else {
        print("I have particular music preferences.")
    }
    // Prints "I have particular music preferences."
    

    将新项目添加到集合中

    favoriteGenres.insert("Jazz")
    

    从集合中移除一个项目,如果该项目是该集合的成员,则移除该项目,并返回移除的值,或者nil如果该集合不包含该项目,则返回该值。另外,一个集合中的所有项目都可以用它的removeAll()方法删除。

    if let removedGenre = favoriteGenres.remove("Rock") {
        print("\(removedGenre)? I'm over it.")
    } else {
        print("I never much cared for that.")
    }
    

    集合是否包含特定的项目

    if favoriteGenres.contains("Funk") {
        print("I get up on the good foot.")
    } else {
        print("It's too funky in here.")
    }
    // Prints "It's too funky in here."
    
    

    遍历集合

    for genre in favoriteGenres {
        print("\(genre)")
    }
    

    Swift的Set类型没有定义的顺序。要按特定顺序迭代集合的值,请使用sorted()方法

    for genre in favoriteGenres.sorted() {
        print("\(genre)")
    }
    
    setVennDiagram_2x.png
    使用该intersection(:)方法创建一个只有两个集合通用的值的新集合。
    使用该symmetricDifference(
    :)方法创建一个新的集合中的值,而不是两个。(a,b集合去掉共同部分)
    使用该union(:)方法创建一个包含两个集合中所有值的新集合。
    使用该subtracting(
    :)方法创建一个新的集合,其值不在指定的集合中。(a集合去掉a和b集合的交集)
    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).sorted()
    // [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]
    
    

    集合关系
    使用“is equal”运算符(==)来确定两个集合是否包含所有相同的值。
    使用该isSubset(of:)方法确定一个集合的所有值是否包含在指定的集合中。
    使用该isSuperset(of:)方法来确定一个集合是否包含指定集合中的所有值。
    使用isStrictSubset(of:)or isStrictSuperset(of:)方法来确定一个集合是一个子集还是一个超集,但不等于一个指定的集合。
    使用该isDisjoint(with:)方法确定两个集合是否没有共同的值。

    let houseAnimals: Set = ["🐶", "🐱"]
    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/aafpmxtx.html