什么是Swift集合?如何使用?详细示例

本文概述

快速集是一个简单的容器, 可以在无序列表中保存数据类型的多个值。它不能两次存储相同的值。在这里, 无序列表意味着你将不会以与输入集中相同的方式获得商品。

Swift集与Swift数组

Swift集和Swift数组之间的主要区别在于, 与Swift数组不同, Swift集不能两次存储相同的值。快速集可确保你一个项目仅出现一次, 并且项目的顺序并不重要。

存储在Swift集中的值必须是可哈希的。哈希意味着, 它必须提供一个hashValue属性。 HashValue用于访问集合的元素, 因为集合是无序的。

默认情况下, 所有Swift基本数据类型(例如String, Int, Double和Bool)都是可哈希的, 并且可用作设置值类型。我们还可以在Swift中创建可存储在集合中的Hashable Type。

如何在Swift中声明集合?

我们可以声明一个可以存储一些值的集合。

例:

let someIntSet:Set = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(someIntSet)

输出

[2, 4, 9, 5, 6, 7, 3, 1, 8]

声明一个包含重复值的集合

let someIntSet:Set = [1, 2, 3, 4, 8, 8, 8, 5, 5]
print(someIntSet)

输出

[2, 4, 5, 3, 1, 8]

在上面的程序中, 我们输入了5和8的重复值。但是在输出中, 我们可以看到重复值已被删除。

在Swift中访问集合元素

因为set元素是无序的, 所以我们无法像访问Swift中的array元素一样访问set元素。

因此, 我们必须使用其方法和属性或使用for-in循环访问set元素。

在Swift中访问所有设置的元素

例:

var someIntSet:Set = [1, 2, 3, 4, 5, 6]
for val in someIntSet {
    print(val)
}

输出

5
6
2
3
1
4

使用remove()方法访问选择性设置的元素

我们可以使用remove()方法访问集合中的选择性元素。

例:

var someIntSet:Set = [1, 2, 3, 4, 5, 6]
let someVal = someIntSet.remove(5)
print(someVal)
print(someIntSet)

输出

Optional(5)
[6, 2, 3, 1, 4]

在上面的程序中, 你可以看到remove()方法返回一个可选字符串。建议执行以下可选处理。

使用remove()方法的可选处理

例:

var someIntSet:Set = [1, 2, 3, 4, 5, 6]
if let someVal = someIntSet.remove(5) {
    print(someVal)
    print(someIntSet)
} else {
    print("cannot find element to remove")
}

输出

5
[6, 2, 3, 1, 4]

在Swift中添加新元素

insert()方法用于在Swift中添加新元素。

添加单个元素

例:

var someIntSet:Set = [1, 2, 3, 4, 5, 6]
someIntSet.insert(7)
print(someIntSet)

输出

[2, 4, 5, 6, 7, 3, 1]

在上面的示例中, 我们在预定义集中添加了一个新元素7。

添加多个元素

例:

var someIntSet:Set = [1, 2, 3, 4, 5, 6]
someIntSet.insert(7)
someIntSet.insert(8)
someIntSet.insert(9)
someIntSet.insert(10)
print(someIntSet)

输出

[10, 2, 4, 9, 5, 6, 7, 3, 1, 8]

Swift集合的操作

使用set的另一个优点是它可以帮助你执行set操作, 即联合, 交集等。它与Mathematics中的set操作相同。

联盟集操作

两个集合a和b的并集是集合在集合a和集合b中的所有元素的集合。通过使用a.union(b)访问它。

例:

let a: Set = [1, 3, 5, 7, 9]
let b: Set = [0, 2, 4, 6, 8]
print(a.union(b))

输出

[8, 2, 9, 4, 5, 7, 6, 3, 1, 0]

交叉口设置操作

两个集合a和b的交集是两个集合中共同的元素集合。通过使用a.intercection(b)访问它。

例:

let a: Set = [1, 3, 5, 7, 9]
let b: Set = [0, 3, 4, 7, 8]
print(a.intersection(b))

输出

[7, 3]

减法运算

两个集合a和b的减法是一个集合, 其中包含a的所有元素, 但不包括也属于b的元素。通过使用a.subtracting(b)访问它。

例:

let a: Set = [1, 3, 5, 7, 9]
let b: Set = [0, 3, 4, 7, 8]
print(a.subtracting(b))

输出

[5, 9, 1]

对称差异集操作

两个集合a和b的对称差是一个集合, 其中包含所有在两个集合中的元素, 但不在两个集合中的所有元素。通过使用a.symmetricDifference(b)访问它。

例:

let a: Set = [1, 3, 5, 7, 9]
let b: Set = [1, 3, 7, 6, 8]
print(a.symmetricDifference(b))

输出

[5, 6, 9, 8]

一些内置的功能和属性

Index 内置设定功能 Explanation
1. isEmpty isEmpty属性用于确定集合是否为空。如果集合为空, 则返回true, 否则返回false。
2. first 第一个属性用于访问集合的第一个元素。
3. insert insert函数用于在集合中插入/追加元素。
4. reversed 此函数以相反的顺序返回集合的元素。
5. count 此属性返回集合中元素的总数。
6. removeFirst 此函数从集合中删除并返回第一个值。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?