Предотвращение дублирования копий в табличном представлении

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

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

2 ответа

Решение

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

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

- (NSUInteger)indexOfObject:(id)anObject

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

NSNotFound

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

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

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

Другие вопросы по тегам