美文网首页
从 Set 到 Swift

从 Set 到 Swift

作者: overla5 | 来源:发表于2019-10-11 21:53 被阅读0次

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

相关文章

网友评论

      本文标题:从 Set 到 Swift

      本文链接:https://www.haomeiwen.com/subject/gqztmctx.html