集合類型
一組同類型的值得組合,根據(jù)組合的整體特性分為:
有序可重復(fù):數(shù)組(Array)
無序不重復(fù):Set
無序可重復(fù)步势,但每個值有唯一的鍵(key):字典(Dictionary)
批量處理集合中的元素,可以使用for in 循環(huán)
// 數(shù)組
有序可重復(fù),用于存儲同一類型的值
定義:Array<類型> 或者[類型]
// 創(chuàng)建一個有默認(rèn)值的數(shù)組
let array : [Int]
array = [Int](repeatElement(3, count: 10))
// 創(chuàng)建一個有序范圍的Int數(shù)組忿晕,Array(起始值...終止值)
let array2 = Array(1...10)
// 用數(shù)組字面量來創(chuàng)建數(shù)組:[值1,值2银受,值3践盼,...,值N]
var places = ["guangzhou","shanghai","chongqin","hainan"]
// 元素計數(shù):count 空否:isEmpty
places.count
places.isEmpty
// +添加:append 添加一個同類型的數(shù)組 +=
places.append("wuhan")
let haiwaiplace = ["NewYork","London","Sao paolu"]
places += haiwaiplace
// 獲取元素:數(shù)組名[索引]宾巍,索引總是從0開始
places[7]
// 插入:insert
places.insert("Paris", at: 5)
// 移除:remove
places.remove(at: 6)
places
for str in places {
print(str)
}
集合(Set):值無序不重復(fù)咕幻,適合存儲具有唯一性的數(shù)據(jù),如用戶名/身份證/身份證號碼/護照號等
// 定義:Set<元素類型>,無法使用類型推斷顶霞,但可省略類型
let set : Set<Int> = [1,2,3]
let cardno : Set = [1,2,4,3,1,5]
// 用數(shù)組字面量創(chuàng)建集合
var citys : Set = ["shanghai","shenzhen","guangzhou","beijing"]
// 元素計數(shù):count 空否:isEmpty
citys.count
citys.isEmpty
// 插入:insert
citys.insert("chengdu")
// 移除:remove
citys.remove("shanghai")
// 是否包含某元素:contains
citys.contains("beijing")
// 轉(zhuǎn)換成數(shù)組:sorted
let cityArray = citys.sorted();
// 集合間的運算
var x:Set = [1,2,3,4]
var y:Set = [4,3,5,6]
// 交集:intersection
x.intersection(y)
x
// 差集:subtract 改變x
// x.subtract(y)
// 并集:union 改變x
// x.union(y)
// 補集:symmetricDifference
x.symmetricDifference(y)
// 集合的關(guān)系
// 相等:兩個集合有完全相同的元素
let h : Set = [1,2,3]
let i : Set = [3,1,2]
let j : Set = [2]
h == i
// 子集:isSubset(可以相等),嚴(yán)格子集isStrictSubset(不可以相等)
h.isSubset(of: i)
h.isStrictSubset(of: i)
j.isSubset(of: h)
j.isStrictSubset(of: h)
// 父集:isSupersetOf(可以相等)肄程,嚴(yán)格父集isStrictSuperSetOf(不可以相等)
i.isSuperset(of: h)
i.isStrictSuperset(of: h)
i.isStrictSuperset(of: j)
// 無交集:isDisjoint
let m : Set = ["游戲","動漫"]
let n : Set = ["購物","小吃","化妝"]
m.isDisjoint(with: n)
字典:值無序可重復(fù),但每個值有唯一的鍵(key)
// 定義:Dictionary <鍵類型选浑,值類型>蓝厌,或[鍵類型:值類型]
var a:Dictionary<String,String>
var b:[String:String]
// 用字典字面量來創(chuàng)建字典,鍵與值之間用冒號隔開
var airports = ["PVG":"Shanghai Pudong","CHU":"Dalian","DUB":"Dublin Airport"]
// 計數(shù):count 空否:isEmpty
airports.count
airports.isEmpty
airports
// 添加或更新:字典變量[鍵] = 值
airports["SHQ"] = "Hongqiao Airport"
airports["CHU"] = "大連周水子機場"
airports
// 獲取,Key
airports["DUD"]
airports["CHU"]
// 移除 用key把值設(shè)為nil
airports["CHU"] = nil
airports
// 循環(huán)一個字典 for in 因為鍵值對有2個元素古徒,用元祖變量
for (key,value) in airports {
print(key,value)
}
// 單獨使用其中鍵或值拓提,使用keys或values(可使用 for in)
for key in airports.keys{
print(key)
}
// 把鍵值對分離成數(shù)組,用[數(shù)組類型](字典變量.keys)隧膘,[數(shù)組類型](字典變量.values)
let codes = [String](airports.keys)
let airportFullname = [String](airports.values)