Skip to content

Set 集合

概念

和数组非常类型,没有顺序,统一类型,内容不能重复

声明

Set 方法传入一个数组,会自动去除重复的内容

swift
var s = Set([1, 2, 2, 3, 3, 4])

print(s) // [2, 3, 4, 1]

是否为空

isEmpty 判断是否为空

swift
var s = Set([1, 2, 2, 3, 3, 4])

print(s.isEmpty) // false

获取长度

count 获取长度

swift
var s = Set([1, 2, 2, 3, 3, 4])

print(s.count) // 4

插入元素

insert 方法可插入元素,返回两个值,第一个是一个布尔值,表示是否插入成功,第二个值的插入的内容

如果已经存在的内容就会插入失败

swift
var a  = Set(["苹果", "香蕉", "栗子"])

var (c, v) = a.insert("苹果")

print(c, v) // false 苹果

update 方法可以强行插入

swift
var a = Set(["苹果", "香蕉", "栗子"])

a.update(with: "橘子")

print(a) // ["栗子", "橘子", "香蕉", "苹果"]

删除元素

remove 可以删除指定的元素

swift
var a  = Set(["苹果", "香蕉", "栗子"])

a.remove("苹果")

print(a) // ["香蕉", "栗子"]

removeAll 可以删除全部元素

swift
var a  = Set(["苹果", "香蕉", "栗子"])

a.removeAll()

print(a) // []

布尔运算

union 方法可以合并两个集合

swift
var a  = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])

print(a.union(b)) // ["西瓜", "栗子", "香蕉", "橙子", "苹果"]

subtracting 方法可以减去相同的元素

swift
var a  = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])

print(a.subtracting(b)) // ["苹果", "栗子"]

intersection 方法可以获取相交的部分

swift
var a  = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])

print(a.intersection(b)) // ["香蕉"]

symmetricDifference 方法可以获取除去相交之外的部分

swift
var a  = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉", "橙子", "西瓜"])

print(a.symmetricDifference(b)) // ["橙子", "栗子", "西瓜", "苹果"]

超集喝子集

isSubset 方法获取一个集合是否为目标参数的子集

isSuperset 方法获取一个集合是否为目标参数的超集

swift
var a  = Set(["苹果", "香蕉", "栗子"])
var b = Set(["香蕉"])

print(b.isSubset(of: a)) // a 里有香蕉,所以 b 是 a 的子集
print(a.isSuperset(of: b)) // a 里有香蕉,所以 a 是 b 的超集

随机数

randomElement 方法获取集合中的随机数

swift
var a  = Set(["苹果", "香蕉", "栗子"])

print(a.randomElement() ?? "")