Swift學習筆記(5):集合類型
阿新 • • 發佈:2017-05-19
nbsp roc 三種 一個 刪除指定元素 edge 空值 port 自定義
目錄:
- 數組:Array
- 集合:Set
- 字典:Dictionary
Swift提供Array(有序集合數據)、Set(無序無重復集合)和Dictionary(無序鍵值對集合)三種基本集合類型來存儲明確數據類型的集合數據。
使用var將集合聲明為變量,可以在創建之後添加、移除、修改集合內數據項。如果使用let將集合聲明為常量,則它的大小和內容就都不可改變。
數組:Array
初始化和賦值:
var someInts = [Int]() // 創建指定數據類型的空數組 someInts = [] // 為已知數據類型的數據賦空值// threeDoubles 是一種 [Double] 數組,等價於 [0.0, 0.0, 0.0] var threeDoubles = Array(repeating: 0.0, count: 3) // 創建帶有默認值的數據 // sixDoubles 被推斷為 [Double],等價於 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5] var anotherThreeDoubles = Array(repeating: 2.5, count: 3) var sixDoubles = threeDoubles + anotherThreeDoubles // 通過+組合兩個相同數據類型數組 var shoppingList = ["Eggs", "Milk"] // 數組字面量構造數組 var shoppingList: [String] = ["Eggs", "Milk"] // 與上面等價
我們可以使用下標或屬性和方法來訪問和修改數組:
shoppingList.count // 獲取數組元素個數 // 使用isEmpty屬性判斷數組書否為空 if shoppingList.isEmpty { print("The shopping list is empty.") } shoppingList.append("Flour") // 使用append()方法追加數據元素 shoppingList += ["Chocolate Spread", "Cheese", "Butter"] // 使用+=追加數據元素 var firstItem = shoppingList[0] // 使用數組下標訪問元素,第一項是"Eggs" shoppingList[0] = "Six eggs" // 使用下標改變數組元素 shoppingList[4...6] = ["Bananas", "Apples"] // 將4~6的3個元素替換為右邊的2個元素 shoppingList.insert("Maple Syrup", at: 0) // 使用insert(_:at:)方法在具體索引之前添加元素 let mapleSyrup = remove(at: 0) // 移除制定索引的數組元素 let apples = shoppingList.removeLast() // 移除數組最後一項元素
註意:
?不可以用下標訪問的形式去在數組尾部添加新項
?數組起始索引為0,最大索引為 count-1
使用for-in遍歷數組:
for item in shoppingList { print(item) }
使用數組enumerated()方法遍歷數組返回元素值和索引:
for (index, value) in shoppingList. enumerated() { print("Item \(String(index + 1)): \(value)") } // Item 1: Six eggs // Item 2: Milk // Item 3: Flour // Item 4: Baking Powder // Item 5: Bananas
集合:Set
一種類型的數據需要存儲在Set中,該類型必須是可哈希的,哈希值類型為Int。Swift基本數據類型都可哈希,沒有關聯值的枚舉也可哈希。
自定義數據類型要作為Set元素保存時,必須實現Swift語言的Hashable和Equatable協議。
初始化和賦值:
var letters = Set<Character>() // 創建一個空Sets集合 letters = [] // 已知數據類型,賦值一個空Sets集合, letters依然是Set<Character>類型 // 使用數組字面量構造一個集合 var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
訪問和修改Set集合:
favoriteGenres.count // 獲取Set集合的元素個數 // 使用isEmpty屬性判斷Set集合是否為空 if favoriteGenres.isEmpty { print("As far as music goes, I‘m not picky.") } favoriteGenres.insert("Jazz") // 插入一個Set集合元素 let removedGenre = favoriteGenres.remove("Rock") // 刪除一個Set集合元素 favoriteGenres.removeAll() // 刪除集合所有元素 // 使用contains()方法判斷Set集合是否包含指定元素 if favoriteGenres.contains("Funk") { print("I get up on the good foot.") }
使用for-in遍歷Set集合:
for genre in favoriteGenres { print("\(genre)") }
使用sorted()返回一個已排序的數字來遍歷Set集合:
for genre in favoriteGenres.sorted() { print("(genre)") } // prints "Classical" // prints "Hip hop" // prints "Jazz
字典:Dictionary
初始化和賦值:
var namesOfIntegers = [Int: String] // 創建一個空字典 namesOfIntegers = [:] // 給已知數據類型字典賦空值 // 字面量構造一個字典 var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
訪問和修改Dictionary集合:
airports.count // 獲取字典元素個數 // 判斷字典是否為空 if airports.isEmpty { print("The airports dictionary is empty.") } airports["LHR"] = "London" //使用下標為指定key字典元素賦值或變更值 // 使用字典的updateValue()方法更新字典元素並檢驗更新結果 if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") { print("The old value for DUB was (oldValue).") } // 判斷字典中是否存在指定key關聯元素 if let airportName = airports["DUB"] { print("The name of the airport is (airportName).") } airports["APL"] = nil // 刪除字典指定key關聯的元素 // 使用字典removedValue()方法刪除指定元素並檢驗刪除結果 if let removedValue = airports. removeValue(forKey: "DUB") { print("The removed airport‘s name is (removedValue).") }
使用for-in遍歷字典:
for (airportCode, airportName) in airports { print("(airportCode): (airportName)") } // YYZ: Toronto Pearson // LHR: London Heathrow
通過訪問keys或者values屬性,我們也可以遍歷字典的鍵或者值:
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
聲明:該系列內容均來自網絡或電子書籍,只做學習總結!
Swift學習筆記(5):集合類型