-1

在Objective-C中将一长串数字数组分组为相同数字的较小数组的有效方法是什么?或者如果有一个标准库。

4

1 回答 1

1

Cocoa 有一个非常好的数据结构,称为NSCountedSetcreated 专门用于处理可能重复的对象集。当您向其中添加一系列对象(例如,数字)时,该结构会记住每个对象被添加的次数。

例如,如果您从一个看起来像这样的序列开始

1, 3, 5, 2, 4, 2, 5, 6, 2, 4, 3

并将这些数字添加到计数集中,结构如下:

N - Count
- - -----
1 - 1
2 - 3
3 - 2
4 - 2
5 - 2
6 - 1

有了这个集合,您可以构建您的数组数组,或者简单地将计算的集合保留为更有效的表示。

这是一个例子:

NSArray *data = @[@1, @3, @5, @2, @4, @2, @5, @6, @2, @4, @3];
NSCountedSet *cs = [[NSCountedSet alloc] initWithArray:data];
NSEnumerator *enumerator = [cs objectEnumerator];
NSNumber *value;
while ((value = [enumerator nextObject])) {
    NSLog(@"%@ - %d", value, [cs countForObject:value]);
}
于 2013-07-18T19:28:18.363 回答