###### tags: `語法`
# 集合
集合
1.陣列(Array)
使用整數索引值(index)來存取內容,索引值從0開始到陣列數量減1為止。
2.合集(Set)
只能判斷某個值是否在集合內,且無法透過索引值(index)或鍵值(Key)來存取集合內容。但可以進行集合運算,例如:交集、聯集、對稱差集、差集。
3.字典(Dictionary)
透過鍵(Key)值來存取內容,鍵值不限定整數,可以是任何型態。

# Array 陣列
宣告
```kotlin=
var someInts = [Int]() //宣吿一個array
var someInts: [Int] = [1,2] //宣告一個array並初始化
var someInts = [1,2] //可省略型態
```
一些array的方法
```kotlin=
新增
someInts.append(3)
//在array尾端加入int 3
someInts += [5]
//在array尾端加入int5
插物
someInts.insert(3, 5) // 3==>要插的東西,5==>要插的位置
//要把元素插入到特定的索引位置
var threeDoubles = Array(repeating: 0.0, count: 3)
//repeating:放入集合內容, count: 要放幾個
移除
someInts.remove(at: 0)
//移除array第0個資料
someInts.removeLast()
//移除最後一筆資料
包含
someInts.contains(0)
// 上面的都謝會是Bool,如果array裡有該資料會是true,否則是false
將兩個array合併
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
someInts[0] = 8
// 把第0個值改為8
```
以用 for-in循環來遍歷整個array中值的合集
```kotlin=
for item in someInts {
print(item) // 印出所有數字
}
for (index, value) in shoppingList.enumerated() {
print("Item \(index + 1): \(value)")
}
//如果你需要每个元素以及值的整数索引,使用 enumerated()方法来遍历数组。
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas
```
# set 合集
Set 維護一組不重複的資料,資料不依序儲存。
宣告
```kotlin=
var set1 = Set<Int>()
var set2: Set<Int> = Set()
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
```
方法
intersect()傳回兩組 Set 交集的元素。
union()傳回兩組 Set 聯集的元素。
exclusiveOr()傳回兩組 Set 不交集的元素。
subtract()傳回set1內不含set2的元素。

方法的使用
```kotlin=
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
sorted()//小到大
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 沒有sort
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
```

# Dictionary 字典
宣告
```kotlin=
var namesOfIntegers = [Int: String]()
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
```
添加新資料
```kotlin=
airports["LHR"] = "London"
airports.updateValue("Dublin Airport", forKey: "DUB")
```
可以通过访问字典的 keys和 values属性来取回可遍历的字典的键或值的集合:
```kotlin=
for airportCode in airports.keys {
print("Airport code: \(airportCode)")
}
// Airport code: YYZ
// Airport code: LHR
for airportName in airports.values {
print("Airport name: \(airportName)")
}
// Airport name: Toronto Pearson
// Airport name: London Heathrow
for airportCode in airports.keys {
print("Airport code: \(airportCode)")
}
// Airport code: YYZ
// Airport code: LHR
```
以keys或 values来初始化一個新的array:
```kotlin=
let airportCodes = [String](airports.keys)
// airportCodes is ["YYZ", "LHR"]
let airportNames = [String](airports.values)
// airportNames is ["Toronto Pearson", "London Heathrow"]
```
Swift 的 Dictionary類型是無序的。要以特定的顺序遍历字典的键或值,使用键或值的 sorted()方法。