好久以前用過一次,後來就忘了。。。扎心,如今記錄一下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~