我有一个包含一些重复对象的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