如何在NSArray中计算重复值?

8

我的NSArray中包含重复的值。 我已经找到了这些重复的值,但是如何确定它们重复了多少次?


你是如何找到重复项的?如果你正在遍历数组值并进行比较,那么每当你遇到重复值时,应该能够增加一个整数。 - Aurum Aquila
NSArray *cleanedArray = [[NSSet setWithArray:duplicateElements] allObjects]; 通过这段代码,我删除了重复项。 - iDev
是的,我认为你无法从那个方法中获得计数。看看 @omz 的建议,它似乎会很好地工作。然后,你可以调用 [[NSSet setWithArray:duplicateElements] allObjects]; 方法。 - Aurum Aquila
3个回答

37
你可以使用NSCountedSet来实现这个功能。将所有对象添加到计数集合中,然后使用countForObject:方法查找每个对象出现的次数。

实际上,我只会点赞这个答案并在Chrome中将其加为书签。 - Aurum Aquila

9

示例:

NSArray *names = [NSArray arrayWithObjects:@"John", @"Jane", @"John", nil];
NSCountedSet *set = [[NSCountedSet alloc] initWithArray:names];

for (id item in set) {

    NSLog(@"Name=%@, Count=%lu", item, (unsigned long)[set countForObject:item]);
}

1
你可以尝试这样做:
__block NSInteger elementCount = 0;
NSArray *array;

[<#NSArray yourArray#> indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
    if (obj == <#yourObject#>) {
        elementCount++;
        return YES;
    }
    return NO;
}];

如果这对你有用,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接