0

如何检查数组中重复了多少时间项。我有一个包含重复项的数组。下面是数组。

"Family:0",
"Family:0",
"Family:0",
"Gold:3",
"Gold:3"

所以,我希望相应项目的响应值为 3 和 2。我怎样才能做到这一点。希望我说清楚了。如果有任何不清楚的地方,请询问。

下面是我尝试过的代码。

int occurrences = 0;
int i=0;
for(NSString *string in arrTotRows){
    occurrences += ([string isEqualToString:[arrTotRows objectAtIndex:indexPath.section]]); //certain object is @"Apple"
    i++;
}
4

4 回答 4

7
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:yourArray];

获取出现次数:

int objectCount = [countedSet countForObject:yourQuery];

yourQuery您想要获得多重性的对象在哪里)。在您的情况下,例如:

int objectCount = [countedSet countForObject:@"Family:0"];

并且objectCount应该等于 3,因为“Family:0”在多重集中是三倍。

于 2013-06-04T13:33:46.200 回答
2

您可以为此使用NSCountedSet。将所有对象添加到计数集中,然后使用该countForObject:方法找出每个对象出现的频率。

例子

NSArray *names = [NSArray arrayWithObjects:@"Family:0", @"Family:0", @"Gold:3", @"Gold:3", nil];
    NSCountedSet *set = [[NSCountedSet alloc] initWithArray:names];

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

输出

Name=Gold:3, Count=2

Name=Family:0, Count=2
于 2013-06-04T13:33:18.110 回答
0

NSCountedSet解决了这个问题。添加所有字符串,addObject:然后在countForObject:枚举集合时获得最终计数。

于 2013-06-04T13:33:12.150 回答
0

请试试这个....

int count = 0;

for (int i = 0; i < array.count; ++i) {
    NSString *string = [array objectAtIndex:i];
    for (int j = i+1; j < array.count; ++j) {
        if ([string isEqualToString:[array objectAtIndex:j]]) {
         count++;
        }
    }
于 2013-06-04T13:55:45.653 回答