很久之前用过一次,后来就忘了。。。扎心,现在记录一下

PS:这几种函数其实不限于swift内的,在JavaScript、python、DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的用法。

一、概念介绍

intersection(_ :) 创建一个只包含两个公共值的新集合。(交集)
symmetricDifference(_ :) 创建一个新集合,其值集在两个集合中,但不能同时存在。(非交集)
union(_ :) 创建一个包含两个集合中的所有值的新集合。(合集)
subtracting(_ :) 创建一个值不在指定集中的新集。(补集)

二、举个例子

我们新建一个playground(方便测试)

let list1:Set = ["","",""]
let list2:Set = ["","",""] //list1和list2都有的
print(list1.intersection(list2))
//既不在list1,也不在list2内
print(list1.symmetricDifference(list2))
//list1和list2加起来的所有数据,但不会重复
print(list1.union(list2))
//属于list1,但不属于list2
print(list1.subtracting(list2))

结果:

此外,Set还有其他几种方法:

 集合的成员和相等(Set Membership and Equality)
通过"=="判断两个集合是否包含所有相同的元素
通过"isSubset(of:)"方法判断前者是否是后者的子集。
通过"isSuperset(of:)"方法判断后者是否是前者的子集。
通过"isStrictSubset(of:)"或者"isStrictSuperset(of:)"判断是否是真子集(为子集,且不相等)。
通过"isDisjoint(with:)"方法判断两个集合是否有相同的元素,就是判断两个集合是否有交集。
let s1: Set = ["", ""]
let s2: Set = ["", "", "", "", ""]
let s3: Set = ["", ""] s1.isSubset(of: s2)
// true
s2.isSuperset(of: s1)
// true
3.isDisjoint(with: s2)
// true

补充一下:

目前在swift中,以上函数只能用于集合类(Set <Element>),但如果我们用的是其他集合类型,比如数组([int])、字典([Int: String])

我们需要先转换下类型,如下:

        let list1:[String] = ["","",""]
let list2:[String] = ["","",""]
let s1 = Set(list1)
let s2 = Set(list2) print(s1.intersection(s2))
print(s1.symmetricDifference(s2))
print(s1.union(s2))
print(s1.subtracting(s2))

有时候,当需要对数据进行类似处理,用集合可以简单的实现以上效果。

enjoy~

 

Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)的更多相关文章

  1. Swift中数组集合-b

    数组(Array)是一串有序的由相同类型元素构成的集合.数组中的集合元素是有序的,可以重复出现. 声明一个Array类型的时候可以使用下面的语句之一. var studentList1:Array&l ...

  2. 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合

    原创文章,欢迎转载.转载请注明:关东升的博客 数组(Array)是一串有序的由相同类型元素构成的集合.数组中的集合元素是有序的,可以重复出现. 声明一个Array类型的时候可以使用下面的语句之一. v ...

  3. Swift 中异常抛出和四种异常处理

    在Swift中你可以像其他语言一样抛出异常处理异常,今天我们就详细地说说Swift中的异常抛出和处理. 在一开始我们要定义错误或者说是异常,Swift中的一些简单异常可以使用枚举定义,注意这个枚举要继 ...

  4. Swift中的集合类型

    一.引子: 在2014年10月TIOBE编程语言排行榜中,Swift位居第18位,从2014WWDC发布会首次公布至今不到半年时间,swift一直受到编程人 员的追捧,其热衷程度并不亚于当红巨星Tay ...

  5. Swift中正则使用正则的几种方式

    之前记录了用正则验证邮箱地址   下面我也记录一下用其它方法使用正则 如下,查询字符串内是否有大写字母,注意rangeOfString方法的第二个参数是.RegularExpressionSearch ...

  6. MYSQL 时间计算的 3 种函数

    方法 1. 加法 adddate('date_expression',interval value type); 'date_expression' + interval value type; -- ...

  7. 在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客

    尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在 Swift世界中很刺眼. 在 ...

  8. 寒哥带你深入了解下Swift中的Value Type

    http://www.cocoachina.com/swift/20150923/13539.html 关于开发到底使用ValueType 值类型还是Reference Type 引用类型,关于这个, ...

  9. swift:创建集合视图UICollectionView

    swift中创建集合视图和OC中差不多,主要是实现UICollectionViewDataSource数据源协议和UICollectionViewDelegateFlowLayout自定义布局协议,其 ...

随机推荐

  1. 工作记录之 [ python请求url ] v s [ java请求url ]

    背景: 模拟浏览器访问web,发送https请求url,为了实验需求需要获取ipv4数据包 由于不做后续的内容整理(有内部平台分析),故只要写几行代码请求发送https请求url列表中的url即可 开 ...

  2. eclipse配置tomcat,让java web项目运行起来!

    做项目,搞开发.开发环境配置时第一步.只有环境搭好了,以后的事情才能顺利进行! 这不需求来了,负一屏项目有新功能需要添加,临时接手,要进行服务器前端开发.这个项目是以前后台java人员进行开发的.都是 ...

  3. iOS9 中 alertView 的使用

    "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerSty ...

  4. JMeter-java.lang.OutOfMemoryError: PermGen space错误

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...

  5. Min_25筛 学习笔记

    这儿只是一个简单说明/概括/总结. 原理见这: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushu ...

  6. DWM1000 定位数据收发以及定位算法

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 定位数据 官方定位程序,建议先学习基础API程序 参考手册: 在手册上提到,目前双向定 ...

  7. [BZOJ3038]遥远的国度

    Description: 给定一棵树,每次询问u节点在以v为根时的子树权值最大值 Hint: \(n \le 10^5\) Solution: 这个模型还是很重要的 考虑树剖 以1节点为根建树 当\( ...

  8. MySQL(四)

    分组 按照字段分组,表示此字段相同的数据会被放到一个组中 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合运算 语法: select 列1,列2 ...

  9. Django——分页

    必要属性和方法 per_page: 每页显示条目数量 count: 数据总个数 num_pages:总页数 page_range:页面范围,从1开始,例如[1,2,3,4]. page: page对象 ...

  10. DOM操作技术

    1.动态script function loadScript(url) { var script = document.createElement("script"); scrip ...