Set 集合

解释:

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

特点:

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

注意:

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

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

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

你可能感兴趣的:(Set 集合)