Предотвращение дублирования копий в табличном представлении - PullRequest
2 голосов
/ 30 сентября 2010

У меня есть NSMutableArray, который я отображаю через табличное представление. Проблема в том, что когда я добавляю объекты в этот массив, я не хочу иметь дубликаты.

Если я создаю NSMutableSet из NSMutableArray, затем добавляю объекты в NSMutableSet и затем преобразовываю его обратно в NSMutableArray, является ли это более эффективным, чем проверка NSMutableArray с помощью цикла на наличие дубликатов перед добавлением элемента?

Ответы [ 2 ]

4 голосов
/ 30 сентября 2010

Как правило, да, было бы более эффективно использовать набор.Построение набора из n элементов составляет O(n log n).Найти все дубликаты в массиве, просто пройдя по нему, будет O(n^2).(Если вы действительно уверены, что можете получить O (n log n), но вам придется переписать то, что уже сделано)

1 голос
/ 30 сентября 2010

вы можете проверить, существует ли объект, который вы добавляете, используя

- (NSUInteger)indexOfObject:(id)anObject

если объект существует в массиве, он выдаст вам индекс, иначе он вернет

NSNotFound

так что вы можете сделать if перед добавлением элементов в ваш массив.

Я думаю, что немного лучше в памяти, потому что вы не создаете объекты.

Надеюсь, это поможет

...