NSSet与NSArray区别
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区别相关推荐
- iOS 读书笔记 第一章
1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *arra ...
- 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词
一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...
- NSSet所有API学习。
/****************集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址.只是NSArray是有序的集合,NSSet是无序的集合,同一时候NSSet能够保证数据 ...
- 黑马程序员18——OC之Fundation(NSSet)
/* NSSet和NSArray的对比 1> 共同点 * 都是集合,都能存放多个OC对象 * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int.char.float等,结构 ...
- iOS:Cocoa编码规范 -[译]Coding Guidelines for Cocoa
转载:http://blog.csdn.net/houseq/article/details/27369043 原文地址:https://developer.apple.com/library/mac ...
- iOS 开发面试通关指南:67 个必知问题!
作者 | Artur Rymarz 译者 | 香槟超新星,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 我们都知道,面试可能会让人感到压力山大--不管你是第一次参加面试的 ...
- iOS 初学者功能代码大集合,个人笔记
UitableView cell 高度自适应 Masonry UILabel iOS UI控件 1.UIButton按钮 2.UILabel文本标签 3.UITextField文本输入框 4.UII ...
- iOS开发中那些容易被我们忽略的代码,常用代码集合
退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } CGRect CGRe ...
- [iOS]-系统框架
虽说不使用系统框架也能编写 Objective-C代码,但几乎没人这么做.即便是NSObject 这个标准的根类,也属于Foundation框架,而非语言本身.若不使用Foundation,就必须自己 ...
最新文章
- SpringMVC:后台将List转为Json,传值到页面
- HTML5 新增内容
- unity集成openinstall流程
- 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
- python定时任务_Python 定时任务最佳实践
- Git学习总结(4)——我的Git忽略文件与忽略文件提交规则和配置总结
- C++ 基本学习 C99基本语法(1)
- 山东大学软件学院计算机组成原理课程设计整机实验(3)
- matlab里的计算符号,Matlab符号运算总结
- 编程语言为什么不能用中文
- 迅速把庸才变将才的七大步
- windowsXP sp2 to sp3 的升级包
- PostGIS的安装与初步使用
- 手把手 | 用Python语言模型和LSTM做一个Drake饶舌歌词生成器
- 大数据在金融行业中的应用
- 51单片机和LCD1602实现简单的密码锁
- C#读取shp多边形文件
- Android9.0 网络框架之--Tethering 热点
- matlab的subplot--子图位置大小随心所欲
- android 平板的 dpi,Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸...
热门文章
- jsp,mysql乱码情况1
- 在Web.Config中指定页面的基类
- HTML网页中table居中和表格内容居中
- 管理系统中的计算机应用数据库系统,自考管理系统中的计算机应用重点: 数据库系统(1)...
- windows server上存储提示“由于管理员设置的策略,该磁盘处于脱机状态”
- cocos2dx之Http网络编程(一)——网络请求的发送和接收
- 手机游戏行业洗牌在即 成本增长小团队出局
- 4核a5中断linux,中断与时钟 - osc_a5pzxo31的个人空间 - OSCHINA - 中文开源技术交流社区...
- destoon php文件,Destoon模板制作简明教程
- 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究