type
status
date
slug
summary
tags
category
icon
password
example-row
example-row
Swift中集合(Set)用于存储相同类型并且没有确定顺序的值。一个类型的值如果要存储在集合(Set)中,该类型必须是可哈希化的。即该类型需要遵循 Hashable 协议,提供一个类型为 Int 的可读属性hashValue。该类型的 hashValue 属性返回的值不需要在同一程序的不同执行周期或者不同程序之间保持相同。因为 Hashable 协议遵循 Equatable 协议,所以遵循该协议的类型也必须提供一个“是否相等”运算符(==)的实现。这个 Equatable 协议要求任何遵循 == 实现的实例间都是一种相等的关系。和java语言一样,相等的对象哈希值必须相同,而哈希值相同,对象不一定相等。
Swift 的所有基本类型(比如 StringIntDoubleBool)默认都是可哈希化的,可以作为集合值的类型或者字典键的类型。没有关联值的枚举成员值默认也是可哈希化的。
Swift 中的集合(Set)类型被写为 Set<Element>,这里的 Element 表示集合(Set)中允许存储的类型。和数组不同的是,集合(Set)没有等价的简化形式。集合(Set)的初始化必须显式声明类型,不然会被认为是数组。

创建集合(Set)

操作集合(Set)

  • 属性 count,获取元素个数。
  • 属性 isEmpty,获取元素个数是否为0。
  • 方法insert(_:) ,添加一个新元素。
  • 方法remove(_:) ,删除一个元素。
  • 方法contains(_:) ,检查集合(Set)中是否包含一个特定的值。
  • 可以使用for-in进行元素遍历。
输出结果:

集合(Set)运算

  • 方法intersection(_:) ,根据两个集合(Set)的交集创建一个新的集合。
  • 方法symmetricDifference(_:) ,根据两个集合(Set)不相交的值创建一个新的集合。
  • 方法union(_:) ,根据两个集合(Set)的所有值创建一个新的集合。
  • 方法subtracting(_:) ,根据不在另一个集合(Set)中的值创建一个新的集合。
  • 运算符==,判断两个集合(Set)包含的值是否全部相同。
  • 方法isSubset(of:) ,判断一个集合(Set)中的所有值是否也被包含在另外一个集合中。
  • 方法 isSuperset(of:) ,判断一个集合(Set)是否包含另一个集合中所有的值。
  • 方法 isStrictSubset(of:) ,判断一个集合(Set)是否是另外一个集合的子集合,并且两个集合并不相等。
  • 方法 isStrictSuperset(of:) ,判断一个集合(Set)是否是另外一个集合的父集合并且两个集合并不相等。
  • 方法 isDisjoint(with:) ,判断两个集合(Set)是否不含有相同的值(是否没有交集)。
输出结果:
 
【swift006】集合类型-数组(Array)【swift008】集合类型-字典(Dictionary)
  • Twikoo