Set用来存储相同类型并且没有确定顺序的值。与数组不同的是,Set里的元素是无序的,并且每个元素都不能重复。
Set<Element> // Element表示Set中允许存储的类型
创建Set
1创建空Set
var letters = Set<Character>()
2用数组字面量创建Set
var favoriteColors:Set<String> = ["红色",“绿色”,"蓝色"]
由于从数组字面量不能推断出Set类型,所以Set类型必须显式声明。但是,如果数组字面量的所有元素类型相同,则Set里元素的类型无需显式写出,可由系统自动判断。
var favoriteColors:Set = ["红色",“绿色”,“蓝色”]
访问和修改Set
1.获取Set中元素的数量。
var favoriteColors:Set = ["红色",“绿色”,“蓝色”]
let count = favoriteColors.count // 获取元素的个数
print("我喜欢的颜色有\(count)种")
2.Set的增删查操作
var favoriteColors:Set = ["红色",“绿色”,“蓝色”]
// 1.添加
favoriteColors.insert("黄色")
print(favoriteColors)
// 2.删除
if let removeGreen = favoriteColors.remove("绿色"){
print("我已经不喜欢\(removeGreen)了")
}else{
print("我从来没喜欢过这个颜色")
}
// 3.检查是否包含某元素
if favoriteColors.contains("黑色"){
print("好吧,我还喜欢这个颜色")
}else{
print("黑色太沉重了,不是我的菜")
}
// 4.删除所有元素
favoriteColors.removeAll()
print(favoriteColors)
3.遍历Set
import UIKit
var favoriteColors:Set = ["red",“white”,“black”]
print("-----无序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.两个集合的交集
a.intersection(b).sorted()
// 2.两个集合中不同的元素组成的集合
a.symmetricDifference(b).sorted()
// 3.两个结合的并集
a.union(b).sorted
// 4.a集合去掉两个集合的交集
a.subtracting(b).sorted
Set之间的关系
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没有交集",b.isDisjoint(with:c))
print("b和d相等",b==d)