开发者社区> 优惠码发放> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract) 很久之前用过一次,后来就忘了。。。扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript、python、DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的用法。
+关注继续查看

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Swift实用小册09:存储属性、计算属性及属性观察器的使用
Swift实用小册09:存储属性、计算属性及属性观察器的使用
0 0
Swift的类,及存储属性,计算发发样码
进入机械的学习模式, 就是把代友敲完。 以期能加深些记忆。
886 0
《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法
<span style="font-family:宋体;font-size: 10.5pt; mso-ascii-font-family: Arial; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Arial; mso-bidi-font-family: A
966 0
SWIFT中计算两个日期间隔多少小时
SWIFT中如何计算两个日期间隔多少个小时,其实几句代码就可以搞定了,Very Easy,在Playground内输入以下代码 var date1 = "2015-06-26 8:15:10" var dateformatter = NSDateFormatter() dateformatter.
605 0
Swift学习笔记——页面跳转
创建一个single view app后,项目中有main.storyboard,里面是一个viewcontroller。 那么我们如何实现页面跳转 首先添加一个导航控制器Navigation Controller。点击右上的➕,然后选择控件拖到面板上即可
0 0
Swift学习笔记——新建项目
在xcode菜单中选择 new -> project -> single view app 点击next在弹出窗中填写项目名称 这里languge有可以选择object-c或swift作为项目语言。这里我们学习swift,所以选择swift。 如果language选择swift,下面的user interface可以选择swiftUI和storyboard。 SwiftUI是2019 年 WWDC 大会上,苹果在压轴环节向大众宣布了基于 Swift 语言构建的全新 UI 框架,与flutter类似,是用代码编写页面,支持快速预览。
0 0
+关注
优惠码发放
阿里云优惠码阿里云推荐券bieryun.com
文章
问答
文章排行榜
最热
最新
相关电子书
更多
OpenStack Swift 海量小文件性能优化之路
立即下载
From Java_Android to Swift iOS
立即下载
Swift在Airbnb的应用实践
立即下载