2

テーブルビューで表示するNSMutableArrayがあります。問題は、この配列にオブジェクトを追加するときに、重複したくないということです。

NSMutableArrayからNSMutableSetを作成し、次にオブジェクトをNSMutableSetに追加してから、それをNSMutableArrayに変換し直す場合、アイテムを追加する前にループを介してNSMutableArrayをチェックするよりも効率的ですか?

4

2 に答える 2

4

一般的にはい、セットを使用する方が効率的です。n個のアイテムのセットを作成するのはO(n log n)です。配列をループするだけで、配列内のすべての重複を見つけることができますO(n^2)。(本当に決心している場合は、O(n log n)を取得できますが、セットがすでに実行していることを少し書き直す必要があります。)

于 2010-09-30T03:24:03.057 に答える
1

追加するオブジェクトが存在するかどうかは、を使用して確認できます。

- (NSUInteger)indexOfObject:(id)anObject

オブジェクトが配列に存在する場合はインデックスを提供し、そうでない場合は戻ります

NSNotFound

したがって、配列に要素を追加する前にifを実行できます。

オブジェクトを作成しないので、メモリに関しては少し良いと思います。

お役に立てれば

于 2010-09-30T03:29:20.960 に答える