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

转载于:https://www.cnblogs.com/iOS-mt/p/4126831.html

NSSet与NSArray区别相关推荐

  1. iOS 读书笔记 第一章

    1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *arra ...

  2. 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...

  3. NSSet所有API学习。

    /****************集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址.只是NSArray是有序的集合,NSSet是无序的集合,同一时候NSSet能够保证数据 ...

  4. 黑马程序员18——OC之Fundation(NSSet)

    /*  NSSet和NSArray的对比  1> 共同点  * 都是集合,都能存放多个OC对象  * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int.char.float等,结构 ...

  5. iOS:Cocoa编码规范 -[译]Coding Guidelines for Cocoa

    转载:http://blog.csdn.net/houseq/article/details/27369043 原文地址:https://developer.apple.com/library/mac ...

  6. iOS 开发面试通关指南:67 个必知问题!

    作者 | Artur Rymarz 译者 | 香槟超新星,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 我们都知道,面试可能会让人感到压力山大--不管你是第一次参加面试的 ...

  7. iOS 初学者功能代码大集合,个人笔记

    UitableView cell 高度自适应 Masonry UILabel iOS  UI控件 1.UIButton按钮 2.UILabel文本标签 3.UITextField文本输入框 4.UII ...

  8. iOS开发中那些容易被我们忽略的代码,常用代码集合

    退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } CGRect CGRe ...

  9. [iOS]-系统框架

    虽说不使用系统框架也能编写 Objective-C代码,但几乎没人这么做.即便是NSObject 这个标准的根类,也属于Foundation框架,而非语言本身.若不使用Foundation,就必须自己 ...

最新文章

  1. SpringMVC:后台将List转为Json,传值到页面
  2. HTML5 新增内容
  3. unity集成openinstall流程
  4. 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
  5. python定时任务_Python 定时任务最佳实践
  6. Git学习总结(4)——我的Git忽略文件与忽略文件提交规则和配置总结
  7. C++ 基本学习 C99基本语法(1)
  8. 山东大学软件学院计算机组成原理课程设计整机实验(3)
  9. matlab里的计算符号,Matlab符号运算总结
  10. 编程语言为什么不能用中文
  11. 迅速把庸才变将才的七大步
  12. windowsXP sp2 to sp3 的升级包
  13. PostGIS的安装与初步使用
  14. 手把手 | 用Python语言模型和LSTM做一个Drake饶舌歌词生成器
  15. 大数据在金融行业中的应用
  16. 51单片机和LCD1602实现简单的密码锁
  17. C#读取shp多边形文件
  18. Android9.0 网络框架之--Tethering 热点
  19. matlab的subplot--子图位置大小随心所欲
  20. android 平板的 dpi,Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸...

热门文章

  1. jsp,mysql乱码情况1
  2. 在Web.Config中指定页面的基类
  3. HTML网页中table居中和表格内容居中
  4. 管理系统中的计算机应用数据库系统,自考管理系统中的计算机应用重点: 数据库系统(1)...
  5. windows server上存储提示“由于管理员设置的策略,该磁盘处于脱机状态”
  6. cocos2dx之Http网络编程(一)——网络请求的发送和接收
  7. 手机游戏行业洗牌在即 成本增长小团队出局
  8. 4核a5中断linux,中断与时钟 - osc_a5pzxo31的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. destoon php文件,Destoon模板制作简明教程
  10. 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究