## 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 搜索控件