Ios 类似于iPhone中的HashSet

Ios 类似于iPhone中的HashSet,ios,objective-c,iphone,Ios,Objective C,Iphone,我是java程序员。Java中有一个HashSet的概念,它不会在集中添加重复的元素。iPhone中有哪些类似的概念具有相同的功能 请提示 提前感谢。使用NSObject的has确保没有重复项 或 如果需要向集合中添加内容。HashSet是。我相信,它与可可相当。您可以在iOS中使用NSSet。NSSet是唯一项的(无序)集合。因此,您可以在数组中找到唯一的项,如下所示: NSSet *uniqueElements = [NSSet setWithArray:myArray];

我是java程序员。Java中有一个
HashSet
的概念,它不会在
集中添加重复的元素。iPhone中有哪些类似的概念具有相同的功能

请提示

提前感谢。

使用
NSObject
的has确保没有重复项


如果需要向集合中添加内容。

HashSet
是。我相信,它与可可相当。

您可以在iOS中使用NSSet。NSSet是唯一项的(无序)集合。因此,您可以在数组中找到唯一的项,如下所示:

     NSSet *uniqueElements = [NSSet setWithArray:myArray];

    // iterate over the unique items
    for(id element in uniqueElements)
       {
          // do something
       }
NSSet最有可能使用散列算法进行插入O(1)(与O(n^2)相比,通过迭代检查每个项是否唯一),但Apple文档并没有做出这样的保证,因此您可能不应该依赖于该实现细节


如果出于某种原因,您需要将唯一项保留在已排序(有序)的集合中,您可以将集合转换回具有-[NSSet allObjects]的数组,然后对生成的数组进行排序。

因此我使用
NSSet
,这是否有助于实现我的要求?因为我不熟悉java,所以无法确认它们是否100%相同。但是
NSSet
与您描述的不一样。从文档中可以看出
NSSet
是不可变的。这将使它与Java中的
HashSet
有根本的不同,并且可能不会执行所需的操作。Objective-C就是这样工作的,只需使用
NSMutableSet
。我希望它们的顺序与我插入的顺序相同。NSSET会有帮助吗?如果您希望它是相同的顺序,那么使用NSORDERDESET:它是不同对象的有序集合。如果顺序相关,则可以使用NS(可变)OrderedSet。