博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSSet和NSArray区别与方法总结
阅读量:4941 次
发布时间:2019-06-11

本文共 1484 字,大约阅读时间需要 4 分钟。

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

转载于:https://www.cnblogs.com/transcendent/p/4079561.html

你可能感兴趣的文章
rsync 精确同步文件用法 (转载)
查看>>
【Flume】HDFSSink源码理解
查看>>
Using Container Service to Build WeChat Applets
查看>>
RGB颜色转换算法C语言实现
查看>>
用GOACCESS分析NGINX日志
查看>>
Creating Skins with SkinSys Ver 1.0
查看>>
《VMware Virtual SAN权威指南》一3.3 VSAN网络配置之VMware标准交换机
查看>>
只为那句承诺-大话Promise
查看>>
IaaS市场大整合:云用户喜忧参半
查看>>
Skype-Type:一款通过声音窃取键盘记录的Keylogger工具
查看>>
思科收购安全云新贵Observable网络 计划打造自己的Stealthwatch平台
查看>>
这份文件说,英特尔真的要放弃死气沉沉的PC业务了
查看>>
德国公司研发太阳能公路 能源利用率可达15%
查看>>
小区拆墙后看视频安防拐点
查看>>
为实战而生,科达正式发布猎鹰系列智能分析系统
查看>>
Rays Power Infra将在印度建立100MW光伏项目
查看>>
QTP安装问题小记
查看>>
第十次Scrum meeting
查看>>
html输入框去除记忆功能
查看>>
C# 反射给对象赋值遇到的问题——类型转换
查看>>