4

いくつかの重複オブジェクトを含むNSArrayがあります。複製されているオブジェクトを印刷したいのですが、次に例を示します。

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

これらが複製されているので、コンソールで印刷したいと思いますAB

どうすればよいですか?

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 に答える