我有一个包含一些重复对象的NSArray。我想打印哪些对象正在重复,例如:
NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];
现在我想在我的控制台A
& B
因为这些是重复的。
我该怎么做?
答案 0 :(得分:11)
您可以使用NSCountedSet
。您可以在计数集中添加所有对象,然后使用countForObject
:方法查找每个对象出现的频率。阅读NSCountedSet以获取进一步的参考资料
答案 1 :(得分:6)
使用NSCountedSet并仅打印为countForObject:
方法返回数字> 1的元素
答案 2 :(得分:3)
这可能远非完美,但它有效
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]);
答案 3 :(得分:0)
另一种方法是对数组进行排序并查找相邻的重复项。可能比使用散列集方法慢一点,但基本相同的“大O”。
答案 4 :(得分:-1)
尝试我的逻辑:
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]);
}
}
}