NSArray和NSSet的区别

  • 首先,NSSet和NSArray功能性质一样,用于存储对象,属于集合。但是和NAArray不一样的是它属于 “无序集合”,在内存中存储方式是不连续的,而NSArray是 “有序集合” 它内存中存储位置是连续的。
  • 其次,NSSet的效率确实是比NSArray高的,因为它主要用的是hash算法,我的理解中,NSSet在集合中寻找一个元素的时候是一针见血,找到目标顺着就去了;而NSArray的话需要循环集合中所有的对象,来找到所需要的目标。所以,循环所有对象与直接去对象的位置获取,速度就显而易见了。
  • 最后,你额外还需要主意两点

1.NSSet,NSArray都是类,只能添加对象,如果需要加入基本数据类型(int,float,BOOL,double等),需要将数据封装成NSNumber类型。

2.由于NSSet是用hash实现的所以就造就了它查询速度比较快,但是我们不能把某某对象存在第几个元素后面之类的有关下标的操作。

hash:散列,也可直译为“哈希”,我不知道怎么说他,有兴趣可以百度百科一下

无序集合:集合里的元素只能遍历

有序集合:集合里的元素可以根据key或index访问

NSSet 常用方法总结

+(id)setWithObjects:obj1,obj2,...nil    使用一组对象创建新的集合
-(id)initWithObjects:obj1,obj2,....nil  使用一组对象初始化新分配的集合
-(NSUInteger)count  返回集合成员个数
-(BOOL)containsObject:obj   确定集合是否包含对象 obj
-(BOOL)member:obj   确定集合是否包含对象 obj
-(NSEnumerator*)objectEnumerator    返回集合中所有对象到一个 NSEnumerator 类型的对象
-(BOOL)isSubsetOfSet:nsset  判断集合是否是NSSet的子集
-(BOOL)intersectsSet:nsset  判断两个集合的交集是否至少存在一个元素
-(BOOL)isEqualToSet:nsset   判断两个集合是否相等

NSMutableSet 常用方法总结

-(id)setWithCapcity:size    创建一个有size大小的新集合
-(id)initWithCapcity:size   初始化一个新分配的集合,大小为size
-(void)addObject:obj    添加对象 obj 到集合中
-(void)removeobject:obj 从集合中删除对象 obj
-(void)removeAllObjects 删除集合中所有对象
-(void)unionSet:nsset   将nsset的所有元素添加到集合
-(void)minusSet:nsset   从集合中去掉所有的NSSet 的元素
-(void)interectSet:nsset    集合和NSSet 做交集运算

你可能感兴趣的:(NSArray和NSSet的区别)