因為Sets本身特性的關係,所以Swift有提供幾種方式來判斷兩個Set之間的值是否有交集與重複。
可以先看一下以下這張圖,有個概念,在搭配接下來的講解會比較好理解
從上圖可以得知,有四種不同的狀況,分別為:
intersection: 建立一個新的Set,比較兩個Set中原本既有的值在新的Set裡面。
由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過intersection集合操作之後,
會發現存在的值只剩下7, 因為set1跟set2兩者交集的值只有7。
symmetricDifference: 建立一個新的Set,比較兩個Set中不重複的值。
由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過symmetricDifference集合操作之後,
會發現存在的值除了兩個Set之中重複7之外,其他的值都包含在內。
union: 建立一個新的Set,比較兩個Set中所有的值,不管有沒有重複。
由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過union集合操作之後,
只要是這兩個Set裡有的值,都會包含在內。
subtracting: 建立一個新的Set,比較兩個Set中,如果前者有的值而後者沒有則會包含在內,需注意是以"前者"的值為比較的基準去做比較。
由下圖可以看到Set1的值為1,2,3,7,Set2的值為4,5,6,7,透過subtracting集合操作之後,
會發現存在的值只有Set1的1,2,3,以前者為導向去比較是否與後者有重複,不重複才會包含在內。
所以如果是以Set2為前者的話,結果則會印出4,5,6。
其實講白話文一點就是
intersection = 僅包含兩個Set中"重複的值"
symmetricDifference = 僅包含兩個Set中"不重複的值"
union = 只要是兩個Set中出現的值都包含在內
subtracting = 兩個Set中僅前者的值與後者的值比較後"不重複的值"
不知道有沒有比較好懂呢? 如果解說的不夠完善請見諒,可以實際執行一次程式碼會更有感覺。