NSSet和NSArray区别与方法总结

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 做交集运算
时间: 2024-08-25 01:03:39

NSSet和NSArray区别与方法总结的相关文章

NSSet与NSArray区别

NSSet与NSArray区别 NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的: NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希):开发文档中

NSSet类型 以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的: NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希):开发文档中这样解释:You can use

NSArray NSMutableArray   NSNumber 方法

@font-face {  font-family: "宋体";}@font-face {  font-family: "宋体";}@font-face {  font-family: "@宋体";}@font-face {  font-family: "Cambria";}@font-face {  font-family: "Heiti SC Light";}@font-face {  font-fam

NSDictionary  NSSet和NSArray的区别

Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组) NSSet 用于对象无序集合      (集合) NSDictionary用于键值映射(字典) 以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类): NSMutableArray NSMutableSet  可修改的集合.主要用于集合运算(并集,交集,差集) NSMutab

NSArray其中的方法--遍历,

1. ForLoop, For - in, enumerateObjects这个三个方法的区别: 遍历一个数组用For-in最快. 通过Value查询index的时候, 面对大量的数组推荐使用 enumerateObjectsWithOptions的并行方法. 遍历字典类型的时候, enumerateKeysAndObjectsUsingBlock效率最高 1.1遍历数组 NSMutableArray *test = [NSMutableArray array]; for (int i = 0;

switch,break和continue区别,函数调用方法,默认类型提升

1.switch语句的格式?针对格式的解释?以及注意事项?解:格式:switch(表达式){case 值1:语句1;break;case 值2:语句2;break;......case 值n-1:语句n-1;break;case 值n:语句n;break;default:语句n+1;break;格式解释:switch-选择结构语句,作用与if一样. case-其后的值与表达式进行比较,若符合表达式则执行. default-若上述条件都不成立,则执行default中的语句,作用同if语句中的els

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

在C#、Java中,为什么不能用[返回值]区别重载方法?

为什么方法签名只包含方法名和参数列表,而没有把返回值考虑进去? 如下有两个方法: void Func(){} string Func() { return string.Empty; } 编辑器可以根据上下文和返回值,确定调用哪个方法,如: string value = Func(); 有时候你并不需要返回值呢: Func(); 编辑器应该如何区分,别人应该如何理解 ?

wdcp系统支持大小写路径方法 Linux支持大小写区别的方法

我们经常用二度云,阿里云搭建php环境因为wdcp默认环境下没有安装mod_speling.so模块所以导致大小写不能够顺畅转换浏览.接下来我们介绍安装mod_speling.so模块的方法:1.下载Apache HTTP Server 2.2.25地址:http://httpd.apache.org/download.cgi#apache222.解压压缩包到本地找到\modules\mappers下mod_speling相关文件mod_speling打头的五个文件上传到到服务器/www/wdl