iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
自我挑戰組

初入Swift新手村的旅程系列 第 8

Day08 Swift語法( 7 ) 集合Set

  • 分享至 

  • xImage
  •  

集合

集合類型是一種無順序的集合類型,但其中的元素不可以重複,與陣列一樣,集合在宣告必須指定其類型,或是給出初值型別推斷。

var set1: Set = [1,2,3,4]
var set2 = Set(arrayLiteral: 1,2,3,4)

由於集合沒有順序,所以透過下標的方式來獲得值不太具有意義,但是還是可以透過下標來獲取其中的元素。

獲取第一個元素( 順序不定 )

set1[set1.startIndex]

獲取後一個元素

set1[set1.index(after: set1.startIndex)]

獲取後幾個元素

set1[set1.index(set1.startIndex, offsetBy: 3)]

獲取元素個數

set1.count

判斷是否為空

if set1.isEmpty {
    print("Empty")
}

判斷是否包含某個元素

if set1.contains(1) {
    print("contain")
}

獲取最大值

set1.max()

獲取最小值

set1.min()

集合也支持,增刪查改

插入元素

set1.insert(5)

刪除元素

set1.remove(1)

刪除第一個元素

set1.removeFirst()

刪除一個範圍的元素

set1.remove(at: set1.firstIndex(of: 3)!)

刪除全部元素

set1.removeAll()

集合與陣列,除了有順序和無順序的區別外,集合還有一個特點,可以進行運算,例如交集,聯集,差集,對稱差集。下面是Swift官方所提供的圖。

https://ithelp.ithome.com.tw/upload/images/20220923/2015254954zrscBoAV.png

var set3:Set = [1,2,3,4]
var set4:Set = [1,2,5,6]
var setInter = set3.intersection(set4)
print(setInter)
// [1, 2]
var setEx = set3.symmetricDifference(set4)
print(setEx)
// [3, 5, 4, 6]
var setUni = set3.union(set4)
print(setUni)
// [1, 3, 2, 4, 5, 6]
var setSub = set3.subtracting(set4)
print(setSub)
// [3, 4]

集合中還提供了一些方法來判斷集合間的關係

var set5:Set = [1,2]
var set6:Set = [2,3]
var set7:Set = [1,2,3]
var set8:Set = [1,2,3]
set5.isSubset(of: set7)
// return ture
set7.isSuperset(of: set5)
// return ture
set5.isStrictSubset(of: set7)
// return true
set7.isStrictSuperset(of: set8)
// return false

跟陣列一樣,集合也可以利用for in 來遍歷獲得集合中的元素資訊

遍歷元素

for item in set7 {
    print(item)
}

遍歷集合的列舉

for item in set7.enumerated() {
    print(item)
}

遍歷集合的下標

for index in set7.indices {
    print(set7[index])
}

雖然集合是沒有順序的,但還是可以進行排序

從大到小排序在遍歷集合

for item in set7.sorted(by: >) {
    print(item)
}

接下來,是字典的介紹


上一篇
Day07 Swift語法( 6 )陣列
下一篇
Day09 Swift語法( 8 ) 字典
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言