iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
0

Sets


因為Sets本身特性的關係,所以Swift有提供幾種方式來判斷兩個Set之間的值是否有交集與重複。

可以先看一下以下這張圖,有個概念,在搭配接下來的講解會比較好理解
https://ithelp.ithome.com.tw/upload/images/20190921/20120063cCDuR9hxHQ.png

從上圖可以得知,有四種不同的狀況,分別為:

  • intersection: 建立一個新的Set,比較兩個Set中原本既有的值在新的Set裡面。
    由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過intersection集合操作之後,
    會發現存在的值只剩下7, 因為set1跟set2兩者交集的值只有7。
    https://ithelp.ithome.com.tw/upload/images/20190921/20120063sZyreWZ9Q1.png

  • symmetricDifference: 建立一個新的Set,比較兩個Set中不重複的值。
    由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過symmetricDifference集合操作之後,
    會發現存在的值除了兩個Set之中重複7之外,其他的值都包含在內。
    https://ithelp.ithome.com.tw/upload/images/20190921/20120063UrMuUILJbm.png

  • union: 建立一個新的Set,比較兩個Set中所有的值,不管有沒有重複。
    由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過union集合操作之後,
    只要是這兩個Set裡有的值,都會包含在內。
    https://ithelp.ithome.com.tw/upload/images/20190921/20120063nHHLwZ97JY.png

  • subtracting: 建立一個新的Set,比較兩個Set中,如果前者有的值而後者沒有則會包含在內,需注意是以"前者"的值為比較的基準去做比較。
    由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過subtracting集合操作之後,
    會發現存在的值只有Set1的1,2,3,以前者為導向去比較是否與後者有重複,不重複才會包含在內。
    所以如果是以Set2為前者的話,結果則會印出4,5,6。
    https://ithelp.ithome.com.tw/upload/images/20190921/20120063Kh4mdROuFG.png

其實講白話文一點就是
intersection = 僅包含兩個Set中"重複的值"
symmetricDifference = 僅包含兩個Set中"不重複的值"
union = 只要是兩個Set中出現的值都包含在內
subtracting = 兩個Set中僅前者的值與後者的值比較後"不重複的值"
不知道有沒有比較好懂呢? 如果解說的不夠完善請見諒,可以實際執行一次程式碼會更有感覺。


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

尚未有邦友留言

立即登入留言