如何检查数组中重复的时间项数。我有一个包含重复项的数组。下面是数组。
"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++;
}
答案 0 :(得分:7)
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:yourArray];
获取出现次数:
int objectCount = [countedSet countForObject:yourQuery];
(其中yourQuery
是您想要获得多重性的对象)。在您的情况下,例如:
int objectCount = [countedSet countForObject:@"Family:0"];
和objectCount
应该等于3,因为“族:0”在多集中是三次。
答案 1 :(得分: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
答案 2 :(得分:0)
NSCountedSet
解决了这个问题。使用addObject:
添加所有字符串,然后在枚举集合时使用countForObject:
获取最终计数。
答案 3 :(得分: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++;
}
}