iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0

題外話:今天真的是一個很煎熬的一天,因為身體狀況不適的關係,去做了胃鏡檢查,原來最近一直折磨我的就是胃食道逆流,常常睡到半夜就被胃酸給叫醒,然後做完檢查,休息吃完藥,忙了一些日常瑣碎的事情到現在才剛踏進家門,不過不管如何,文章還是得持續發下去,給自己一點勉勵這是一趟毅力之旅。

集合型別 - Array、Dictionary、Set


前面我們介紹過了基礎型別、特殊型別,現在來介紹集合型別。

何謂集合型別?其實就我自己的理解,講集合型別還蠻抽象的,

比較白話文的講法我覺得可以用陣列的概念。

陣列可視為一些相同型態的資料集合,同時在這個集合中每一筆資料都有一個唯一的編號。

而上述每一種陣列都有自己獨特的特性。

Array

它的特性就是排序,每一筆資料都會依照填入的順序有一個編號。
也可以說是按照順序儲存資料,舉例來說當我們有一個空陣列時,
每放入一筆資料的時候,這個編號會從0開始計算(在電腦的世界基本上起數值都是從0開始)
所以第一筆資料就是[0],第二筆資料就是[1],以此類推[2][3][4][5]......
排序依序儲存資料的好處當然就是在我索取資料的時候可以透過指定的編號去抓到我要的資料。
https://ithelp.ithome.com.tw/upload/images/20190920/201200632DEdfzyGRd.png

那Array要如何新增資料呢? 可以透過append將資料新增在陣列的最後一位。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063vxa0xDzsmd.png

那如何想要指定位置呢? 可以透過insert(值, at:) 去新增到指定的位置,其中的at就是指陣列的位置
https://ithelp.ithome.com.tw/upload/images/20190920/20120063NRNIXsA1YD.png

當然也可以透過指定的索引值去修改陣列裡的值。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063Bx28eJWPR3.png

既然有新增、修改,當然就少不了刪除囉,可以透過removeLast刪除陣列裡的最後一個值
或者是透過remove(at:) 去指定要刪除的陣列值
https://ithelp.ithome.com.tw/upload/images/20190920/20120063WDnSr9domE.png

如果哪天看了很礙眼,也可以用removeAll把陣列整個清空!變成一個空陣列。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063KQncNB1nFe.png

不過需注意的是,因為我們在指派陣列的時候已經給了Int的值,也就是說這個陣列是一個Int的陣列,
所以即便資料都被刪除了,變成了空陣列這個陣列本身還是,只能存放Int的值。

Dictionary

有了Array這種排序儲存資料的陣列,雖然看似很方便,不過相對的壞處就是當今天資料量越大的時候,
你很難去記得陣列中的第[25]裡面儲存了些什麼資料對吧?所以當資料量越來越大的時候,
其實可以使用Dictionary去做為另一種索引的型別,Dictionary的特性就是沒有順序,
不過其實Dictionary提供了兩個值 key : value,
所以雖說儲存的資料是不按照順序的,但透過key就可以找到value。
可以從下圖的右方印出來的值,很明顯的看出值是不排序的。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063R0GM4dVAiV.png

而在修改值的時候跟Array也有些許不同,如果修改的值不存在就會建立一個key跟value
https://ithelp.ithome.com.tw/upload/images/20190920/20120063dlnut5osBj.png

相對的如果是現有的key,就會修改其索引對應的value
https://ithelp.ithome.com.tw/upload/images/20190920/20120063JaNZAX95ZR.png

刪除的部份也是跟Array不一樣,是將值設為nil,不過因為我還沒有介紹的nil就先把它當做一個名詞吧
https://ithelp.ithome.com.tw/upload/images/20190920/20120063U0poKtGWdh.png

Set

最後的Set有什麼特別之處嗎? 它的特性則是沒有順序之外,不用存放重複的值。
相較前面介紹的Array、Dictionary都是接受值可重複這件事情,唯有Set是不接受陣列裡有重複的值。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063hDXbClej2f.png

而Set的新增值的方式是用insert,不像array需要指定位置,因為set本身不會有重複的值及無順序。
https://ithelp.ithome.com.tw/upload/images/20190920/20120063zz25Uq90sQ.png

如果用insert時新增的值視線有的時候,右方就會顯示:inserted false,代表這個值沒有新增成功
因為不重複的特性,所以自然無法新增相同的值在陣列裡面。
https://ithelp.ithome.com.tw/upload/images/20190920/201200639s3O2FhGYG.png

最後還有關於Sets的部份,下回待續。


上一篇
從零開始的學習之旅-Day4
下一篇
從零開始的學習之旅-Day6
系列文
【自我挑戰】一步一腳印,每天進步一點的Swift自學之路。11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言