是一个像链表一样实现的NSMutableSet?

时间:2010-12-11 15:22:24

标签: objective-c linked-list nsset

由于您无法随机访问NSMutableSet的元素,这是否意味着它像链接列表一样实现?

即。它会比NSMutableArray更快插入/删除吗?

4 个答案:

答案 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树)实现集合。