NSSet类型 以及与NSArray区别

转载 2013年12月05日 22:52:30
        NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;


        NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希);开发文档中这样解释:You can use sets as an alternative to arrays when the order of elements isn’t important and performance in testing whether an object is contained in the set is a consideration—while arrays are ordered, testing for membership is slower than with sets.

比如你要存储元素A,一个hash算法直接就能直接找到A应该存储的位置;同样,当你要访问A时,一个hash过程就能找到A存储的位置。而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了;


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


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 做交集运算

iOS_NSSet与NSArray的区别

NSSet和NSArray的区别。
  • siwen1990
  • siwen1990
  • 2016年09月29日 16:29
  • 1203

NSSet类型 以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSAr...
  • duxinfeng2010
  • duxinfeng2010
  • 2012年06月24日 10:59
  • 41625

iOS7: 漫谈基础集合类(NSArray, NSSet, NSOrderedSet 和 NSDictionary)

基础集合类是每一个Mac/iOS应用的基本组成部分。在本文中,我们将对”老类”(NSArray,NSSet)和”新类”(NSMapTable, NSHashTable,NSPointerArray)进...
  • zhuzhihai1988
  • zhuzhihai1988
  • 2015年02月10日 11:22
  • 2087

NSArray,NSDictionary,NSSet总结

NSArray,NSDictionary,NSSet总结 够全面
  • u010586842
  • u010586842
  • 2014年11月23日 13:02
  • 2035

NSSet如何转成NSArray

//如果想排序以后再取,可以这样: NSSet *users = [groupUser users]; NSSortDescriptor *sd = [[NSSortDescriptor allo...
  • hong1595
  • hong1595
  • 2014年04月18日 12:01
  • 782

iOS 中NSArray NSSet转换 过滤重复与排序操作

很久没写ios代码。最近和朋友聊天时候有强迫症,想强烈把代码给优化。 问题是这样的:现在数据是日期数组,想过滤掉重复的日期,怎么解决。 原始代码 这里想到更简洁点。用NSSet来搞定。 ...
  • watsy
  • watsy
  • 2014年01月02日 13:14
  • 17879

NSSet类型以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSAr...
  • Damon_hoo
  • Damon_hoo
  • 2014年10月16日 21:49
  • 310

NSSet类型 以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSAr...
  • focusjava
  • focusjava
  • 2013年10月30日 10:10
  • 552

黑马程序员----NSSet类型 以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSAr...
  • qq_17714921
  • qq_17714921
  • 2014年08月18日 19:51
  • 209

OC-046.NSArray和NSSet的区别

相同点: 1.NSSet和NSArray功能性质一样,用于存储对象,属于集合类; 2.NSSet,NSArray都是类,只能添加cocoa对象,如果需要加入基本数据类型(int,float,BOO...
  • longpapa
  • longpapa
  • 2015年12月15日 11:59
  • 122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSSet类型 以及与NSArray区别
举报原因:
原因补充:

(最多只允许输入30个字)