いくつかの重複オブジェクトを含む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」です。