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

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. 【LeetCode算法-14】Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. If there is n ...

  2. 基于netty的websocket例子

    nettyServer package com.atguigu.netty.websocket; import javax.annotation.PostConstruct; import org.s ...

  3. 从零搭建 ES 搜索服务(四)拼音搜索

    一.前言 上篇介绍了 ES 的同义词搜索,使我们的搜索更强大了,然而这还远远不够,在实际使用中还可能希望搜索「fanqie」能将包含「番茄」的结果也罗列出来,这就涉及到拼音搜索了,本篇将介绍如何具体实 ...

  4. gdb windbg and od use

    gdb aslr -- 显示/设置 gdb 的 ASLR asmsearch -- Search for ASM instructions in memory asmsearch "int ...

  5. 湖南大学第十四届ACM程序设计新生杯(重现赛)

    RANK  0 题数 0 期末复习没有参加,补几道喜欢的题. A: AFei Loves Magic  签到 思路 :不需考虑 碰撞 直接计算最终状态即可. #include<bits/stdc ...

  6. 网络篇:linux下select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪 ...

  7. Django restful

    1.restful api的规范 API与用户的通信协议,总是使用HTTPs协议. 域名  https://api.example.com                         尽量将API ...

  8. React-Native-Storage使用介绍

    react-native-storage 这是一个本地持久存储的封装,可以同时支持react-native(AsyncStorage)和浏览器(localStorage).ES6语法,promise异 ...

  9. jquery移除事件,绑定事件,触发事件

    $('.gcddfadf-btn-pay').unbind('click');//移除绑定事件 $('.gcddfadf-btn-pay').bind('click',function(){});// ...

  10. python编码转换

    Pyton内部的字符串一般都是unicode编码或字节字符串编码:代码中字符串的默认编码与代码文件本身的编码是一致的:编码转换通常需要以unicode编码作为中间编码进行转换,即先将其他编码的字符串解 ...