テーブルビューで表示するNSMutableArrayがあります。問題は、この配列にオブジェクトを追加するときに、重複したくないということです。
NSMutableArrayからNSMutableSetを作成し、次にオブジェクトをNSMutableSetに追加してから、それをNSMutableArrayに変換し直す場合、アイテムを追加する前にループを介してNSMutableArrayをチェックするよりも効率的ですか?
テーブルビューで表示するNSMutableArrayがあります。問題は、この配列にオブジェクトを追加するときに、重複したくないということです。
NSMutableArrayからNSMutableSetを作成し、次にオブジェクトをNSMutableSetに追加してから、それをNSMutableArrayに変換し直す場合、アイテムを追加する前にループを介してNSMutableArrayをチェックするよりも効率的ですか?
一般的にはい、セットを使用する方が効率的です。n個のアイテムのセットを作成するのはO(n log n)
です。配列をループするだけで、配列内のすべての重複を見つけることができますO(n^2)
。(本当に決心している場合は、O(n log n)を取得できますが、セットがすでに実行していることを少し書き直す必要があります。)
追加するオブジェクトが存在するかどうかは、を使用して確認できます。
- (NSUInteger)indexOfObject:(id)anObject
オブジェクトが配列に存在する場合はインデックスを提供し、そうでない場合は戻ります
NSNotFound
したがって、配列に要素を追加する前にifを実行できます。
オブジェクトを作成しないので、メモリに関しては少し良いと思います。
お役に立てれば