由于您无法随机访问NSMutableSet的元素,这是否意味着它像链接列表一样实现?
即。它会比NSMutableArray更快插入/删除吗?
答案 0 :(得分:5)
源代码可用,因此您可以查看:CFSet.c。 (这是NSSet
的核心基础对应物,但它们基本相同。)这是一个哈希表。
但是你还应该记住,NSArray
实际上并没有作为数组实现。您可以在此处查看实施:CFArray.c。也许this blog article更容易理解,虽然它有点过时(约5年)。
答案 1 :(得分:2)
没有。查找时间会更快,因为它会使用哈希值。
答案 2 :(得分:2)
我不是Objective-C程序员,但通常通过哈希表实现集合,如果正确完成,将产生插入,删除和查找的O(1)。
从技术上讲,哈希通常会给你O(M),其中M是键的大小,但对于一个集合,你只需使用键对象的id,它是常量,所以你回到O( 1)。
答案 3 :(得分:0)
通常使用平衡二叉搜索树(例如红黑树,avl树)实现集合。