当前位置: 首页 > news >正文

set集合 结构体_Swift - 集合(Set)使用详解(附样例)

三、元素访问与操作

1,获取元素个数:count

let fruits: Set = ["apple", "pear", "orange"]

print(fruits.count)

2,判断集合是否为空:isEmpty

let fruits: Set = ["apple", "pear", "orange"]

if fruits.isEmpty {

print("集合是空的")

}else{

print("集合不是空的")

}

3,添加一个新元素:insert()fruits.insert("grape")

4,删除一个元素:remove()

如果删除值是该 Set的一个元素,则删除该元素并且返回被删除的元素值。

如果该 Set不包含该值,则返回 nil。

fruits.remove("apple")

5,删除所有元素:removeAll()fruits.removeAll()

6,判断集合中是否包含特定值:contains()if fruits.contains("apple") {

print("集合中存在该元素。")

}else{

print("集合中不存在该元素。")

}

7,遍历集合元素

(1)可以使用 for in循环遍历一个 Set中的所有值。

var fruits: Set = ["apple", "pear", "orange"]

for fruit in fruits {

print("\(fruit)")

}

(2)如果想按照特定顺序来遍历一个 Set中的值可以使用 sorted()方法。它将返回一个有序数组,这个数组的元素排列顺序由操作符“

var fruits: Set = ["apple", "pear", "orange"]

for fruit in fruits.sorted() {

print("\(fruit)")

}

四、集合的操作

1,过滤集合元素

使用 filter函数可以过滤并返回一个新的 Set。

let fruits: Set = ["apple", "pear", "orange"]

//过滤出以“e”结尾的所有元素

let result = fruits.filter({ $0.hasSuffix("e") })

print(result)

2,两个集合的基本操作

(1)Set提供了如下4 个方法来实现通过现有的两个集合创建一个新的集合:

intersection(_:):根据两个集合中都包含的值创建的一个新的集合。

symmetricDifference(_:):根据在一个集合中但不在两个集合中的值创建一个新的集合。

union(_:):根据两个集合的值创建一个新的集合。

subtracting(_:):根据不在该集合中的值创建一个新的集合。

(2)下面是一个简单的使用样例

let oddDigits: Set = [1, 3, 5, 7, 9]

let evenDigits: Set = [0, 2, 4, 6, 8]

let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

let set1 = oddDigits.union(evenDigits).sorted() // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

let set2 = oddDigits.intersection(evenDigits).sorted() // []

let set3 = oddDigits.subtracting(singleDigitPrimeNumbers).sorted() // [1, 9]

let set4 = oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() // [1, 2, 9]

3,判断两个集合之间的关系

(1)我们可以通过如下几种方法进行判断:

==:判断两个集合是否包含全部相同的值。

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

isSuperset(of:):判断一个集合中包含另一个集合中所有的值。

isStrictSubset(of:):判断一个集合是否是另外一个集合的子集合,并且两个集合并不相等。

isStrictSuperset(of:):判断一个集合是否是另外一个集合的父集合,并且两个集合并不相等。

isDisjoint(with:):判断两个集合是否不含有相同的值(是否没有交集)。

(2)下面是一个简单的使用样例

let set1: Set = [1, 3, 5]

let set2: Set = [1, 3, 5, 7, 9]

let set3: Set = [1, 2, 3]

set1 == set2 // false

set1.isSubset(of: set2) // true

set1.isSuperset(of: set2) // false

set1.isStrictSubset(of: set2) // true

set1.isStrictSuperset(of: set2) // false

set1.isDisjoint(with: set3) // false

五、集合类型的哈希值

相关文章:

  • 前端动态获取servlet虚拟路径_Servlet 过滤器和异常处理
  • access中下划线是font_Python中的模块及扩展库
  • mac vs 返回上一步_Figma:使用mac上的字体 | 转换ttc字体文件
  • cmd 访问url_「图解」创建第一个django应用、配置并访问
  • 周星驰经典超清图片_周星驰与刘德华究竟谁更火?为何30年没合作?看王晶的评价...
  • python小老鼠编程_江门Python技能学习价格实惠,python数组学习价格表
  • android layoutinflater获取的textview无法改变值_Android 值得深入思考的几个面试问答分享...
  • gmat模考_GMAT模考成绩不太准原因大盘点
  • 杂牌平板mt6797_10核时代到来 全网通联发科MT6797发布
  • 360加固签名验证_我竟然又相信了360系统补丁!0428无法验证此文件的数字签名!...
  • tps 数据库写并发衡量_NGK TPS是什么?NGK如何实现百万TPS?
  • 数仓建模 项目_老男局 | 尚硅谷技术汇:数仓高频问题解疑
  • lisp封装成vla函数_C#面向对象特性封装、继承、多态,如何在代码编写时使用封装?...
  • dpkg 删除软件_Linux内网安装软件常用方法详解
  • 华为鸿蒙麒麟玉兔_鸿蒙、朱雀、麒麟华为为中国制造注册了整本山海经!
  • 【Amaple教程】5. 插件
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CentOS7 安装JDK
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • JavaScript 奇技淫巧
  • js
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • MySQL-事务管理(基础)
  • PaddlePaddle-GitHub的正确打开姿势
  • php的插入排序,通过双层for循环
  • Python打包系统简单入门
  • Solarized Scheme
  • SpringCloud集成分布式事务LCN (一)
  • 不上全站https的网站你们就等着被恶心死吧
  • 动态规划入门(以爬楼梯为例)
  • 经典排序算法及其 Java 实现
  • 驱动程序原理
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 通过git安装npm私有模块
  • 微信小程序设置上一页数据
  • 一道闭包题引发的思考
  • 在weex里面使用chart图表
  • C# - 为值类型重定义相等性
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (2015)JS ES6 必知的十个 特性
  • (4.10~4.16)
  • (day6) 319. 灯泡开关
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (轉)JSON.stringify 语法实例讲解
  • (状压dp)uva 10817 Headmaster's Headache
  • ***利用Ms05002溢出找“肉鸡
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net Stream篇(六)
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • /etc/motd and /etc/issue