我有一个NSMutableArray,我通过表格视图显示。问题是,当我向这个数组添加对象时,我不希望有重复项。
如果我从NSMutableArray创建NSMutableSet,然后将对象添加到NSMutableSet然后将其转换回NSMutableArray,那么在添加项目之前,通过循环检查NSMutableArray是否更有效?
答案 0 :(得分:4)
通常是的,使用集合会更有效。构造一组n个项目是O(n log n)
。通过循环查找数组中的所有重复项将是O(n^2)
。 (如果你真的确定你可以获得O(n log n),但是你必须要重写已经做过的设置。)
答案 1 :(得分:1)
您可以使用
检查添加的对象是否存在- (NSUInteger)indexOfObject:(id)anObject
如果对象存在于数组中,它将为您提供一个索引,否则返回
NSNotFound
所以你可以在向数组添加元素之前执行if。
我觉得它在内存方面要好一些,因为你不会创建对象。
希望这有帮助