美文网首页
swift 的集合set

swift 的集合set

作者: Taureau_2d81 | 来源:发表于2017-06-18 09:26 被阅读0次

集合(Set)用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用集合而不是数组。

集合类型语法

Swift 中的Set类型被写为Set<Element>,这里的Element表示Set中允许存储的类型,和数组不同的是,集合没有等价的简化形式。

创建和构造一个空的集合

你可以通过构造器语法创建一个特定类型的空集合:

var letters = Set<Character>()

此外,如果上下文提供了类型信息,比如作为函数的参数或者已知类型的变量或常量,我们可以通过一个空的数组字面量创建一个空的Set:

letters.insert("a")

// letters 现在含有1个 Character 类型的值

letters = []

// letters 现在是一个空的 Set, 但是它依然是 Set<Character>类型

由于 Swift 的类型推断功能,如果你想使用一个数组字面量构造一个Set并且该数组字面量中的所有元素类型相同,那么你无须写出Set的具体类型。

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

由于数组字面量中的所有元素类型相同,Swift 可以推断出Set作为favoriteGenres变量的正确类型。

遍历

Swift 的Set类型没有确定的顺序,为了按照特定顺序来遍历一个Set中的值可以使用sorted()方法,它将返回一个有序数组,这个数组的元素排列顺序由操作符'<'对元素进行比较的结果来确定.

for genre in favoriteGenres.sorted() {

print("\(genre)")

}

// prints "Classical"

// prints "Hip hop"

// prints "Jazz

集合操作

你可以高效地完成Set的一些基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交。

基本集合操作

下面的插图描述了两个集合-a和b-以及通过阴影部分的区域显示集合各种操作的结果。

●使用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).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]

集合成员关系和相等

下面的插图描述了三个集合-a,b和c,以及通过重叠区域表述集合间共享的元素。集合a是集合b的父集合,因为a包含了b中所有的元素,相反的,集合b是集合a的子集合,因为属于b的元素也被a包含。集合b和集合c彼此不关联,因为它们之间没有共同的元素。

●使用“是否相等”运算符(==)来判断两个集合是否包含全部相同的值。

●使用isSubset(of:)方法来判断一个集合中的值是否也被包含在另外一个集合中。

●使用isSuperset(of:)方法来判断一个集合中包含另一个集合中所有的值。

●使用isStrictSubset(of:)或者isStrictSuperset(of:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且两个集合并不相等。

●使用isDisjoint(with:)方法来判断两个集合是否不含有相同的值(是否没有交集)。

相关文章

  • iOS开发 - 「Swift 学习」Sets集合的遍历与相关的合

    Swift语言Set集合的遍历、合并、拆分、求交集的操作 Set集合的遍历 一、for in 遍历 二、按照特定顺...

  • Swift Collection Types

    Swift 提供来三种集合类型,即Array、Set、Dictionary。Array是值的有序集合;Set是无重...

  • Swift集合类型扩展

    对于Swift来说, 数组(Array)、字典(Dictoinary)、集合(Set) 统称集合类型(Collec...

  • Swift 集合(Set)

    demo链接:https://share.weiyun.com/5VRfIYP参考链接:http://www.sw...

  • 8.集合类型(CollectionType)

    kotlin_集合类型 Array_数组 Set Map swift_集合类型 Array_数组

  • 5.集合类型

    Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用来存储集合...

  • 04 集合类型

    Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用来存储集合...

  • 4、Swift集合类型

    集合类型 Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用...

  • Swift - 集合类型

    集合类型 Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用...

  • swift 的集合set

    集合(Set)用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用...

网友评论

      本文标题:swift 的集合set

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