Swift字典:Dictionary
Swift中的字典Dictionary
與Foundation中的NSDictionary
是橋接的圣猎,可以互相轉換使用捣炬。
Swift中定義字典的方法類似于Array
也有兩種寫法:
var dic1:[String:String]
let dic2:Dictionary<String,String>
注意:使用var定義的字典是可變字典京闰,相當于NSMutableDictionary
框往,使用let定義的字典是不可變字典,相當于NSDictionary
佛掖。前面說到的數(shù)組练湿、字符串類似猴仑。
Swift在顯式聲明字典的類型的時候也需要分別確定字典中key和value的類型,類似于Array
。
創(chuàng)建一個空字典:
var dic = [String:String]()
let dic2 = Dictionary<String,String>()
初始化字典:
let dic = ["nihao":"Hello","dier":"next"] // 不可變字典
var dic = ["nihao":"Hello","dier":"next"] // 可變字典
使用dict.isEmpty
來判斷字典是否為空(對數(shù)組也可以使用)辽俗〖苍或者可以通過判斷字典里的元素數(shù)量是否為0:dict.count
同樣對數(shù)組適用。
獲取字典中的元素
和OC中的方法一樣崖飘,可以直接通過索引來獲取字典中的元素:
let dict = ["apple":"蘋果","pear":"梨"]
var fruit = dict["apple"]
讀取字典時榴捡,可以直接判斷字典是否有這個值:
if let value = dic["nihao"] {
print("----------------->\(value)") // 如果能夠通過這個索引找到就輸出
}else{
print("沒有這個東西")
}
修改字典中的元素:
可以直接通過下標來修改或添加元素:
dict["banana"] = "香蕉" // 如果存在 就修改之前內容,如果不存在 就增加一條
dic.updateValue("banana", forKey: "香蕉") // 方法效果與上相同
移除元素:
// 通過下標移除
dict["banana"] = nil
// 或者調用方法 removeValueForKey
dic.removeValue(forKey: "banana")
遍歷字典:
字典的遍歷方式類似于數(shù)組:
// 遍歷字典
for (key,value) in dic {
print("Key is:\(key),Value is :\(value)")
}
// 分別遍歷字典的key 朱浴、value
for key in dic.keys {
print(key)
}
for value in dic.values {
print(value)
}
字典的key或value轉換成數(shù)組
let keys = [String](dic.keys)
let values = Array<String>(dic.values)
print("\(keys)&\(values)")
Swift集合:Set
集合(Set)用來存儲一些類型相同但沒有確定順序的值吊圾。當集合元素順序不重要或者希望確保每個元素只出現(xiàn)一次時可以使用集合而不是數(shù)組來進行存儲。
Swift中Set的類型寫法為Set<Element>
翰蠢,這里的Element
表示Set
中允許存儲的數(shù)據(jù)類型项乒,集合與數(shù)組、字典不同的是:集合沒有簡化的寫法梁沧,只有這一種寫法檀何。
var set = Set<String>() // 創(chuàng)建一個空的集合
set.count // 集合內元素的個數(shù)
初始化集合的方法
var set:Set<String> = ["milk","beef"] // 用數(shù)組構造集合(需要顯式聲明類型,因為如果不顯式聲明就成了數(shù)組)
var set:Set = ["Hello","Hi"] // 如果元素類型相同趁尼,初始化時可以省略類型
集合也可以用isEmpty
來判斷是否為空埃碱,可以用set.contains("milk")
來判斷元素是否在集合中(適用字符串猖辫、數(shù)組)酥泞。
遍歷集合
for value in set {
print("==========>\(value)")
}
集合的基本操作
var set1: Set = [1, 2, 3, 4, 5]
let set2: Set = [1, 4, 3, 8]
// 求兩個集合的交集
// 3, 1, 4
print(set1.intersection(set2))
// 求兩個集合的并集
// 1, 2, 3, 4, 5
print(set1.union(set2))
// 求集合set1與set2的并集 去掉 集合set1與set2的交集 部分
// 2, 5, 8
print(set1.symmetricDifference(set2))
// 求集合set1去掉set1與set2的交集部分
// 2, 5
set1.subtract(set2)
print(set1)
*注:subtract()
方法是會改變set1
的值,其他方法不會改變啃憎。
集合之間的關系
let set1: Set = [1, 2, 3, 4, 5]
let set2: Set = [1, 4, 3, 8]
// false
// set1是否set2的子集
print(set1.isSubset(of: set2))
let set3: Set = [1, 2, 5]
// true
// set3全部在set1中
print(set3.isSubset(of: set1))
// true
// set1真包含set3芝囤,因此set1是set3的超集
print(set1.isSuperset(of: set3))
// true
// set1是set3的嚴格超集,因為Set1真包含set3且set1
print(set1.isStrictSuperset(of: set3))
// true
// set1真包含set3辛萍,且set1 != set3悯姊,因此set3是set1
print(set3.isStrictSubset(of: set1))
let set4: Set = [1, 5, 2]
// false
// 因為set3和set4的元素是一樣的,即相等
print(set4.isStrictSubset(of: set3))
// false
// 這兩個集合中有相同的元素
print(set3.isDisjoint(with: set4))
let set5:Set = [9, 6]
// true
// set5和set4沒有相同的元素
print(set5.isDisjoint(with: set4))
學習使我快樂