我有一個包含一些重複對象的NSArray。我要打印的對象越來越重複,例如:在NSArray中獲取重複內容
NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];
現在我想在我的控制檯A
& B
因爲這些重複打印。
我該怎麼做?
我有一個包含一些重複對象的NSArray。我要打印的對象越來越重複,例如:在NSArray中獲取重複內容
NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];
現在我想在我的控制檯A
& B
因爲這些重複打印。
我該怎麼做?
使用的NSCountedSet,只打印返回一個數> 1的元素countForObject:
方法
您可以使用NSCountedSet
這一點。您可以將所有對象添加到計數集中,然後使用countForObject
:方法找出每個對象出現的頻率。瞭解NSCountedSet進一步參考
比我快30秒:) – 2013-03-02 12:32:55
試試我的邏輯:
for(int i=0; i < array.count; i++)
{
for(int j=0; j< i; j++)
{
if([[array objectAtIndex:i] isEqualToString:[array objectAtIndex:j]])
{
NSLog(@"%@",[array objectAtIndex:i]);
}
}
}
這是一個N平方算法,如果N很大,可能會很慢。儘管如此,如果N很小,也不是不合理的,因爲它非常簡單。人們傾向於倒置N平方的東西。 – 2013-03-02 13:40:53
@ HotLicks-我知道它很慢,但它是唯一的答案在這裏......還有OP在這裏沒有提到它很長的陣列:(所以,我沒有錯! – iPatel 2013-03-02 13:45:32
這可能是完美遠,但它的工作原理
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"b", @"v", @"f", @"f", nil];
NSMutableArray *un_array = [NSMutableArray array];
NSMutableArray *dupArray = [NSMutableArray array];
for (id obj in array)
{
if (![un_array containsObject:obj])
[un_array addObject:obj];
else
[dupArray addObject:obj];
}
NSLog(@"DUPLICATES:");
for (id obj in dupArray)
NSLog(@"%@", [obj description]);
這實質上是N平方,但好奇地得到了 - 投票 – 2013-03-02 13:42:49
開發者選擇他們的戰鬥很重要,是的,這不是最好的方式,特別是一旦數組變大了,但對於微型陣列來說,它可能沒問題。 – runmad 2015-11-30 14:34:50
另一種方法是對數組進行排序,並尋找相鄰重複。可能比使用哈希集合方法稍慢一些,但基本相同的「大O」。
定義重複。如何平等?相同的對象或相同的內容 – uchuugaka 2013-03-02 12:52:50
你是指在「重複的問題」? – 2013-03-02 13:41:21