Предотвращение дублирования копий в табличном представлении
У меня есть 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 перед добавлением элементов в ваш массив.
я думаю, что немного лучше в памяти, потому что вы не создаете для объектов.
Надеюсь это поможет