Swift中關於集合計算的幾種函數記錄(intersect、symmetricDifference、union、subtract)

好久以前用過一次,後來就忘了。。。扎心,如今記錄一下python

PS:這幾種函數其實不限於swift內的,在JavaScript、python、DB等其餘語言,應該也有相似用法,這裏我只簡單講了在swift內的用法。swift

 

1、概念介紹數組

intersection(_ :) 建立一個只包含兩個公共值的新集合。(交集)
symmetricDifference(_ :) 建立一個新集合,其值集在兩個集合中,但不能同時存在。(非交集)
union(_ :) 建立一個包含兩個集合中的全部值的新集合。(合集)
subtracting(_ :) 建立一個值不在指定集中的新集。(補集)

 

 

 

2、舉個例子函數

咱們新建一個playground(方便測試)測試

 

let list1:Set = ["1","2","3"]
let list2:Set = ["2","3","4"]

//list1和list2都有的
print(list1.intersection(list2))
//既不在list1,也不在list2內
print(list1.symmetricDifference(list2))
//list1和list2加起來的全部數據,但不會重複
print(list1.union(list2))
//屬於list1,但不屬於list2
print(list1.subtracting(list2))

 

結果:spa

 

此外,Set還有其餘幾種方法:code

 集合的成員和相等(Set Membership and Equality)
 經過"=="判斷兩個集合是否包含全部相同的元素
 經過"isSubset(of:)"方法判斷前者是不是後者的子集。
 經過"isSuperset(of:)"方法判斷後者是不是前者的子集。
 經過"isStrictSubset(of:)"或者"isStrictSuperset(of:)"判斷是不是真子集(爲子集,且不相等)。
 經過"isDisjoint(with:)"方法判斷兩個集合是否有相同的元素,就是判斷兩個集合是否有交集。
 let s1: Set = ["1", "2"]
 let s2: Set = ["1", "2", "3", "4", "5"]
 let s3: Set = ["4", "5"]
        
 s1.isSubset(of: s2)
 // true
 s2.isSuperset(of: s1)
 // true
 3.isDisjoint(with: s2)
 // true

 

補充一下:blog

目前在swift中,以上函數只能用於集合類(Set <Element>),但若是咱們用的是其餘集合類型,好比數組([int])、字典([Int: String])ip

咱們須要先轉換下類型,以下:it

        let list1:[String] = ["1","2","3"]
        let list2:[String] = ["2","3","4"]
        let s1 = Set(list1)
        let s2 = Set(list2)
        
        print(s1.intersection(s2))
        print(s1.symmetricDifference(s2))
        print(s1.union(s2))
        print(s1.subtracting(s2))

 

有時候,當須要對數據進行相似處理,用集合能夠簡單的實現以上效果。

 

enjoy~

相關文章
相關標籤/搜索