📅  最后修改于: 2021-01-11 07:50:40             🧑  作者: Mango
Swift集是一个简单的容器,可以在无序列表中保存数据类型的多个值。它不能两次存储相同的值。在这里,无序列表意味着您将不会以与输入集中商品相同的方式获得商品。
Swift集和Swift数组之间的主要区别在于,与Swift数组不同,Swift集不能两次存储相同的值。快速集可确保您一个项目仅出现一次,并且项目的顺序并不重要。
存储在Swift集中的值必须是可哈希的。哈希意味着,它必须提供hashValue属性。 HashValue用于访问集合的元素,因为集合是无序的。
默认情况下,所有Swift基本数据类型(例如String,Int,Double和Bool)都是可哈希的,并且可用作设置值类型。我们还可以在Swift中创建可存储在集合中的Hashable Type。
我们可以声明一个可以存储一些值的集合。
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的重复值。但是在输出中,我们可以看到重复值已被删除。
因为set元素是无序的,所以我们不能像访问Swift中的array元素那样访问set元素。
因此,我们必须使用其方法和属性或使用for-in循环访问set元素。
var someIntSet:Set = [1, 2, 3, 4, 5, 6]
for val in someIntSet {
print(val)
}
输出:
5
6
2
3
1
4
我们可以使用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()方法返回一个可选的字符串。建议执行以下可选处理。
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]
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]
使用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 | Built in Set functions | Explanation |
---|---|---|
1. | isEmpty | The isEmpty property is used to determine if a set is empty or not. It returns true if a set is empty otherwise, returns false. |
2. | first | The first property is used to access first element of a set. |
3. | insert | The insert function is used to insert/append element in the set. |
4. | reversed | This function returns the elements of a set in reverse order. |
5. | count | This property returns the total number of elements in a set. |
6. | removeFirst | This function removes and returns the first value from the set. |