我有一个 NSArray ,其中包含一些重复的对象。我想打印哪些对象被重复,例如:
NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];
现在我想在我的控制台中打印,A
因为B
这些是重复的。
我该怎么做呢?
我有一个 NSArray ,其中包含一些重复的对象。我想打印哪些对象被重复,例如:
NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];
现在我想在我的控制台中打印,A
因为B
这些是重复的。
我该怎么做呢?
你可以用NSCountedSet
这个。您可以将所有对象添加到计数集中,然后使用countForObject
: 方法找出每个对象出现的频率。阅读有关NSCountedSet以供进一步参考
使用 NSCountedSet 并且只打印返回数字>1 的countForObject:
元素
它可能远非完美,但它有效
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]);
另一种方法是对数组进行排序并查找相邻的重复项。可能比使用散列集方法慢一点,但相同的基本“大 O”。