4

我有一个 NSArray ,其中包含一些重复的对象。我想打印哪些对象被重复,例如:

NSArray * array = [NSArray arrayWithObjects: A, B, C, A, B];

现在我想在我的控制台中打印,A因为B这些是重复的。

我该怎么做呢?

4

4 回答 4

11

你可以用NSCountedSet这个。您可以将所有对象添加到计数集中,然后使用countForObject: 方法找出每个对象出现的频率。阅读有关NSCountedSet以供进一步参考

于 2013-03-02T12:29:46.903 回答
6

使用 NSCountedSet 并且只打印返回数字>1 的countForObject:元素

于 2013-03-02T12:29:31.883 回答
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]);
于 2013-03-02T12:30:48.523 回答
-1

另一种方法是对数组进行排序并查找相邻的重复项。可能比使用散列集方法慢一点,但相同的基本“大 O”。

于 2013-03-02T13:45:04.370 回答