41 set:定义和创建

set 定义

  • set 是指具有某些特定性质的具体的或抽象的对象汇总而成的集体。其中,构成set的这些对象则称为该set的元素

set 的三个特性

  • 确定性:给定一个集合,任给一个元素,该元素或者属于或不属于该集合,二者必居其一
  • 互斥性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
  • 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。

swift 的集合类型写做 Set,这里的Element是set 要存储的类型。不同于数组,集合没有定价的简写

创建 Set

  • 使用初始化器语法来创建一个确定类型的空set
  • 使用数组字面量创建set
var letters = Set<Character>()
letters.insert("C")
print(letters)
: ["C"]
--------------------------
var course:Set<String> = ["Math","English","History"]
course.insert("History")
print(course)
:  ["History", "Math", "English"]

set 类型的哈希值

  • 为了能让类型储存在set中,它必须是可哈希的,即类型必须提供计算它自身哈希值的方法
  • 所有Swift 的基础类型 (比如 String,Int,Double, 和 Bool)默认都是可哈希的,并且可以用于 set 或者 Dictionary 的键
struct Person{
   var name: String
   var age: Int
}

var personSet = Set<Person>()
personSet.insert(Person(name: "zhangsan", age: 28))


error: MyPlayground.playground:8:17: error: type 'Person' does not conform to protocol 'Hashable'
var personSet = Set<Person>()
               ^
-----------------------
// 正确的方法是在 使用Person 结构体之前,添加其扩展
extension Person:Hashable{
   func hash(into hasher: inout Hasher) {
       hasher.combine(name)
       hasher.combine(age)
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值