Swift第二篇(字典&集合)

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))

學習使我快樂

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末贩毕,一起剝皮案震驚了整個濱河市悯许,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辉阶,老刑警劉巖先壕,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谆甜,居然都是意外死亡垃僚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門规辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谆棺,“玉大人,你說我怎么就攤上這事罕袋「氖纾” “怎么了碍岔?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溅固。 經(jīng)常有香客問我付秕,道長,這世上最難降的妖魔是什么侍郭? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任询吴,我火速辦了婚禮,結果婚禮上亮元,老公的妹妹穿的比我還像新娘猛计。我一直安慰自己,他們只是感情好爆捞,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布奉瘤。 她就那樣靜靜地躺著,像睡著了一般煮甥。 火紅的嫁衣襯著肌膚如雪盗温。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天成肘,我揣著相機與錄音卖局,去河邊找鬼。 笑死双霍,一個胖子當著我的面吹牛砚偶,可吹牛的內容都是我干的。 我是一名探鬼主播洒闸,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼染坯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丘逸?” 一聲冷哼從身側響起单鹿,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎深纲,沒想到半個月后仲锄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡囤萤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年昼窗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涛舍。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡澄惊,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情掸驱,我是刑警寧澤肛搬,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站毕贼,受9級特大地震影響温赔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鬼癣,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一陶贼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧待秃,春花似錦拜秧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至暖庄,卻和暖如春聊替,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背培廓。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工惹悄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人医舆。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓俘侠,卻偏偏與公主長得像象缀,于是被迫代替她去往敵國和親蔬将。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫央星、插件霞怀、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,122評論 4 61
  • 01-常量與變量 學習swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔閱讀 5,171評論 2 19
  • 時光是記憶的橡皮檫,擦去了歲月的痕跡莉给,留下了斑駁的倩影毙石。或許某個人或某個片段會停留在你的內心深處颓遏,在你清醒的瞬間徐矩,...
    深夜食堂放放毒閱讀 154評論 0 1
  • 阿西莫夫的短片精彩而燒腦,但同時又會讓你深陷其中叁幢。 每一篇都是如此精彩滤灯。 《鏡像》中,作者著力構想了一種極端鏡像時...
    Edward76Lee閱讀 1,644評論 0 0
  • 我們已經(jīng)知道NSSet是一個保證唯一性的集合,但是它是如何保證唯一性的呢鳞骤,調用addObject時是如何判斷唯一性...
    老虎Alex閱讀 1,165評論 1 0