美文网首页
Set 集合

Set 集合

作者: craig_wang | 来源:发表于2017-10-11 10:32 被阅读10次

    解释:

    • 根据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来比较>)
    
    

    相关文章

      网友评论

          本文标题:Set 集合

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