Set用來(lái)存儲(chǔ)相同類型并且沒(méi)有確定順序的值。與數(shù)組不同的是镊叁,Set里的元素是無(wú)序的洽洁,并且每個(gè)元素都不能重復(fù)。
Set<Element> // Element表示Set中允許存儲(chǔ)的類型
創(chuàng)建Set
1創(chuàng)建空Set
var letters = Set<Character>()
2用數(shù)組字面量創(chuàng)建Set
var favoriteColors:Set<String> = ["紅色"偷霉,“綠色”,"藍(lán)色"]
由于從數(shù)組字面量不能推斷出Set類型隶债,所以Set類型必須顯式聲明腾它。但是,如果數(shù)組字面量的所有元素類型相同死讹,則Set里元素的類型無(wú)需顯式寫(xiě)出瞒滴,可由系統(tǒng)自動(dòng)判斷。
var favoriteColors:Set = ["紅色"赞警,“綠色”妓忍,“藍(lán)色”]
訪問(wèn)和修改Set
1.獲取Set中元素的數(shù)量。
var favoriteColors:Set = ["紅色"愧旦,“綠色”世剖,“藍(lán)色”]
let count = favoriteColors.count // 獲取元素的個(gè)數(shù)
print("我喜歡的顏色有\(zhòng)(count)種")
2.Set的增刪查操作
var favoriteColors:Set = ["紅色",“綠色”笤虫,“藍(lán)色”]
// 1.添加
favoriteColors.insert("黃色")
print(favoriteColors)
// 2.刪除
if let removeGreen = favoriteColors.remove("綠色"){
print("我已經(jīng)不喜歡\(removeGreen)了")
}else{
print("我從來(lái)沒(méi)喜歡過(guò)這個(gè)顏色")
}
// 3.檢查是否包含某元素
if favoriteColors.contains("黑色"){
print("好吧旁瘫,我還喜歡這個(gè)顏色")
}else{
print("黑色太沉重了,不是我的菜")
}
// 4.刪除所有元素
favoriteColors.removeAll()
print(favoriteColors)
3.遍歷Set
import UIKit
var favoriteColors:Set = ["red"琼蚯,“white”酬凳,“black”]
print("-----無(wú)序Set")
for color in favoriteColors{
print(color)
}
print("-----有序Set")
for color in favoriteColors.sorted(){
print(color)
}
Set之間的操作
var a:Set<Int> = [1,2,3,4,5]
let b:Set<Int> = [4,5,6,7,8]
// 1.兩個(gè)集合的交集
a.intersection(b).sorted()
// 2.兩個(gè)集合中不同的元素組成的集合
a.symmetricDifference(b).sorted()
// 3.兩個(gè)結(jié)合的并集
a.union(b).sorted
// 4.a集合去掉兩個(gè)集合的交集
a.subtracting(b).sorted
Set之間的關(guān)系
let a:Set<Int> = [1,2,3,4,5];
let b:Set<Int> = [1,2]
let c:Set<Int> = [4,5,6,7,8]
let d:Set<Int> = [1,2]
print("b是a的子集",b.isSubset(of:a))
print("a是b的父集",a.isSuperset(of:b))
print("b和c沒(méi)有交集",b.isDisjoint(with:c))
print("b和d相等"遭庶,b==d)