2013-06-04 127 views
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++; 
} 
+0

看到我的答案.... –

回答

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 
0

NSCountedSet解決了這個問題。將所有字符串與addObject:相加,然後在枚舉集合時使用countForObject:獲得最終計數。

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

爲獲得出現的次數:

int objectCount = [countedSet countForObject:yourQuery]; 

(其中yourQuery是你想獲得多重性的對象)。在你的情況,例如:

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

objectCount應該等於3,因爲「家庭:0」是多集的三倍。

+0

是什麼yourQuery? –

+0

@iPhoneProgrammatically multiset中的任何對象。例如:''Family:0「',它應該返回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++; 
     } 
    } 
相關問題