Set
- 集合类型
集合是确定的一堆 "东西",集合里的 "东西" 则称为元素,这里的确定我们可以理解为 类型确定
名称 | 类型 |
---|---|
Array | 存储 有序的值 |
Set | 无序但 唯一值 |
Dictionary | 键值关联 的无序集合 |
Set
- 初始化
1.构造器创建
var setters = Set<Element>()
2.带初始值的集合
var setters: Set<String> = ["aa","bb","cc","aa"]
〔
var setters: Set = ["aa","bb","cc","aa"] // 类型一致,可以自动推导
// 以上2种写法一致 ,打印 ["aa","bb","cc"]
## 🐷:这里自动去重,因为Set 的值是唯一的
3.数组转集合
let array = [7,7,7]
let set = Set(array)
print(array) -> [7, 7, 7]
print(set) -> [7]
// 类型转变 + 自动去重
- 置空
1.在 set 已经确定类型的情况下可以使用 [] 进行置空
var set:Set = [7,1,100] , set = [] // 此时 set 就是一个空集合
2.不可用于直接初始化 ,如下
var set1:Set = [] ❌
报错:protocol type 'Any' cannot conform to 'Hashable' because only concrete types can conform to protocols
原因:必须是可散列的类型才能存储在集合中,符合Hashable协议的类型必须提供名为hashValue的Int类型的可访问的属性
比如Int,Double 等都可以 提供 hashValue 这一属性,而 Any 并不满足 Hashable 的协议。所以不可用于初始化。
- 个数 和 判空
1.个数 count
var set:Set = [7,1,100,2,2]
print(set.count)
// 打印4
2. isEmpty / count == 0
if set.count != 0 {
print("set 不为空")
}
if set.isEmpty {
print("set 为空")
}
- 增删 没有 改查
var setters: Set<Int> = [5,6,7,8]
1.增
setters.insert(9)
2.删 删除指定的元素
setters.remove(5)
以当前的排序删除 某个固定 的index
var set: Set<String> = ["1","a"]
set.remove(at: set.index(after: set.startIndex)) // 删除第一个的后面一个
// ["1"]
print(setters)
[8, 9, 6, 7]
- 遍历
for - in
var setters: Set = ["l","i","e"]
for item in setters {
print(item,"",separator: " ", terminator: "")
}
// l e i
网友评论