Swift 中的集合 (Set)

Set

  • Set 用来存储相同类型并且没有明确的顺序的值,与数组不同的是,Set里面的元素是无序的,并且每个元素都不能重复
  • Set 类型的基本格式为:
Set<Element>()

创建 Set

  • 创建一个空的Set
let letters = Set<Character>()
  • 通过数组创建Set
let favorites : Set<String> = ["红色","绿色","蓝色"]
  • 如果数组中所有元素的类型相同,则Set 中元素的类型无需显式写出,可由系统自动判断推出
var favoriteColor : Set = ["红色","绿色","蓝色"]

访问修改 Set

  • 获取 Set 中的元素个数
var colors : Set = ["1","2","3"]
let count = colors.count

输出
这里写图片描述

Set 增 删 查

var colors : Set = ["1","2","3"]
  • 增加
colors.insert("4")

输出
这里写图片描述

  • 查询
colors.contains("1")

输出
这里写图片描述

  • 删除

  • 删除指定某个元素

colors.remove("2")

输出
这里写图片描述

  • 删除第一个
colors.removeFirst()
  • 删除所有
colors.removeAll()

遍历 Set

//遍历Set 
var colors1 : Set = ["red","blue","white"]

//无序遍历
for color in colors1 {
    print(color)
}

输出
这里写图片描述

//有序遍历
for color in colors1.sorted() {
    print(color)
}

输出
这里写图片描述

Set 之间的操作

let animals1 : Set = ["dog","cat","tiger","fish"]
let animals2 : Set = ["dog","tiger","bird"]
  • 根据两个Set 共同的值创建一个新的Set
let animals3 : Set = animals1.intersection(animals2)

输出
这里写图片描述

  • 根据两个Set 不同的值创建一个新的Set
let animals4 : Set = animals1.symmetricDifference(animals2)

输出
这里写图片描述

  • 根据两个Set 中的所有值创建一个新的Set
let animals5 : Set = animals1.union(animals2)

输出
这里写图片描述

  • 根据 animals1 包含但是 animals2 不包含的值创建一个新的Set
let animals6 : Set = animals1.subtracting(animals2)

输出
这里写图片描述

Set 之间的关系

Swift 中提供了操作符和方法来判断 Set 之间的关系 是否相等 运算符 “==” 判断两个Set 的值是否全部相等

  • 首先创建 Set
let a : Set = [1,2,3,4,5]
let b : Set = [1,2]
let c : Set = [4,5,6,7,8]
let d : Set = [1,2]
  • 判断b 中的值是否都被 a包含
print(b.isSubset(of: a))
  • 判断a 是否包含 b 中的所有值
print(a.isSuperset(of: b))
  • 判断 c 是不是 d 的子集 并且两个 Set 不相等
print(c.isStrictSubset(of: d))
  • 判断 c 是不是 d 的父集 并且两个 Set 不相等
print(c.isStrictSuperset(of: d))
  • 判断 c 和 d 没有有交集 (不含有相同的值)
print(c.isDisjoint(with: d))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值