Set 集合

解释:

  • 根据hashValue,确保元素不重复的(类数组)集合

特点:

  • 元素必须实现Hashable协议
  • 可以和数组一样使用和创建
    let sets: Set<obj: Hashable> = []
    // 其他详细操作 - 看文档

注意:

a) 测试中发现Set的存储结构更像Dic

b) 在测试插入和删除时发现:

  • 获取新元素的hashValue,和已存入Set的hashValues比较(不是遍历Set,重新获取每个元素的新hashValue)。
  • 存在问题:就算同一个元素对象,在存和取的操作中hashValue不同,就会导致错误。需要当心(代码逻辑如下<不完整>)
let sets: Set<Obj> = []
let obj = Obj() // hashValue = 0
sets.insert(obj)
obj.changeHashValue = 1 // 这步操作可以修改对象属性(该属性能导致协议方法返回的hashValue改变即可)
sets.remove(obj) // obj对象不能被移除(感觉和字典操作一样,使用obj的新hashValue找sets中对应的元素,没找到<而不是遍历sets所有元素,对所有元素做hashValue来比较>)

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容