## Swift 集合之基本操作
假如有如下集合:
```
var a: Set<String> = ["Swift","Object-C"]
var b: Set<String> = ["HTML","CSS","JS"]
var c: Set<String> = []
```
### 新增
```
a.insert("PHP") // 新增后 a 的值为:["Object-C", "PHP", "Swift"]
b.insert("HTML") // 新增后 b 的值不变,因为集合中元素是唯一的
```
### 删除
```
a.remove("PHP") // 返回值删除的元素的值。删除指定元素后, a 的值为 ["Object-C", "Swift"]
c.remove("JS") // 删除不存在的元素,返回 nil
a.removeAll() // 清空集合中所有元素
```
使用`remove()`组建自己的业务逻辑
```
if let remove = a.remove("Swift") {
print("Swift is removed")
}
```
> 使用 `remove()` 方法对集合删除操作时,如果删除的元素不存在的话,则返回nil。
### 其他操作
假如有如下集合:
```
var setA: Set<String> = ["Swift","Object-C"]
var setB: Set<String> = ["HTML","CSS","JS"]
var setC = Set(["Swift","HTML","CSS"])
var setD: Set<String> = ["Swift"]
```
#### 集合的并集操作
Swift提供两种操作
* `union()`
* `formUnion()`
它们的区别是,`union()`的操作不影响原集合,而`formUnion()`则会已影响原集合。
求`setA` 与 `setB` 的并集
```
setA.union(setB) // ["JS", "CSS", "Object-C", "HTML", "Swift"]
setA.formUnion(setB) // ["JS", "CSS", "Object-C", "HTML", "Swift"] ,此时 setA的值也等于这个返回值
```
#### 集合的交集操作
Swift提供两种操作
* `intersection()`
* `formIntersection()`
它们的区别是,`Intersection()`的操作不影响原集合,而`formIntersection()`则会已影响原集合。
```
setA.intersection(setC) // Swift
setA.formIntersection(setC) // Swift
```
#### 集合的差集操作
```
setA.subtract(setC) // Object-C 表示setA独有的而setC不具备的元素
setC.subtract(setA) // "Swift","HTML","CSS" 表示setC独有而setA不具备的元素
```
> 集合 `setA` 拥有的元素, `setC` 不拥有的元素。
#### 集合的抑或操作
Swift提供两种操作
* `symmetricDifference()`
* `formSymmetricDifference()`
它们的区别是,`symmetricDifference()`的操作不影响原集合,而`formSymmetricDifference()`则会已影响原集合。
```
setA.symmetricDifference(setC) // "Object-C","HTML","CSS"
setA.formSymmetricDifference(setC) // "Object-C","HTML","CSS"
```
#### 集合的子集、真子集判断
```
setD.isSubset(of: setA)
setD.isStrictSubset(of: setA)
```
#### 集合的超集、超子集判断
子集、真子集的反方向判断
```
setA.isSuperset(of: setD)
setA.isStrictSuperset(of: setD)
```
#### 集合的相离判断
判断两个集合毫无相同的元素
```
setA.isDisjoint(with: setB)
setA.isDisjoint(with: setC)
```
- 学习笔记
- 基础
- 基本类型之整型
- 基本类型之浮点型
- 基本类型之布尔类型以及简单的 if 语句
- 基础类型之元组
- 基本类型之其他
- 运算符
- 基础运算符
- 比较运算符、逻辑运算符
- 三元运算符
- 范围运算符for-in
- 逻辑控制
- 循环结构
- 选择结构
- 字符串
- Character和Unicode
- String.index 和 range
- 可选型
- 容器类
- 数组初始化
- 数组基本操作
- 字典初始化
- 字典基本操作
- 集合初始化
- 集合基本操作
- 函数
- 闭包
- 枚举
- 结构体
- 类
- 文档注释
- 属性和方法
- 下标和运算符重载
- 拓展和泛型
- 协议
- 其他
- Swift 3.0 For 循环
- Swift 随机数的生成
- IOS开发玩转界面 UIKit
- UILable 文本显示控件
- UIButton 简单的交互控件
- UIImageView 图片控件
- UISearchBar 搜索控件