您现在的位置是:首页 > 文章详情

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

日期:2019-02-25点击:545

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

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

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

 

一、概念介绍

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

 

 

 

二、举个例子

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

 

复制代码
let list1:Set = ["1","2","3"] let list2:Set = ["2","3","4"] //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 = ["1", "2"] let s2: Set = ["1", "2", "3", "4", "5"] let s3: Set = ["4", "5"] s1.isSubset(of: s2) // true  s2.isSuperset(of: s1) // true  3.isDisjoint(with: s2) // true
复制代码

 

补充一下:

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

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

复制代码
 let list1:[String] = ["1","2","3"] let list2:[String] = ["2","3","4"] 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~

原文地址https://www.cnblogs.com/yajunLi/p/10437884.html

原文链接:https://yq.aliyun.com/articles/691471
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章