如何判断NSArray中的独特元素如何

时间:2010-07-08 12:48:22

标签: iphone objective-c nsmutablearray nsarray

我有一个NSStrings的数组(实际上是一个可变数组),我想知道数组中有多少个唯一元素。

例如,假设数组由以下组成:

Orange, Lemon, Lemon, Orange, Lemon

然后只有两个独特元素(橙色和柠檬色)。这个数组:

Paul, Steve, John, Harry, Paul, John

..具有四个唯一独特元素。

我如何发现这个号码?

3 个答案:

答案 0 :(得分:13)

NSSet不能包含相等的对象,因此以下工作原理:

NSUInteger count = [[NSSet setWithArray:array] count];

答案 1 :(得分:1)

对数组进行线性扫描,并为每个元素将其添加到NSMutableSet中。 最后计算NSMutableSet中的元素数量。 NSMutableSet不允许添加重复元素。

这比排序数组要快,然后在每次发现新元素时进行线性扫描以增加变量。

编辑:目标-C中的实现由JoostK提供。

答案 2 :(得分:0)

NSUInteger count = [[array valueForKeyPath:@"@distinctUnionOfObjects.self"] count];