NSSet和NSArray的区别
来源:互联网 发布:淘宝批量删除宝贝 编辑:程序博客网 时间:2024/05/18 05:51
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 做交集运算- NSSet和NSArray的区别
- NSSet和NSArray的区别
- NSSet 和 NSArray 区别
- OC-046.NSArray和NSSet的区别
- iOS---NSArray和NSSet的区别
- NSArray与NSSet的区别
- NSSet与NSArray的区别
- NSSet和NSArray的对比
- NSSet NSArray的区别 实际用法 IOS
- NSSet NSArray的区别 实际用法 IOS
- 浅析NSSet与NSArray之间的区别
- NSArray、 NSSet、 NSDictionary 区别:
- NSSet和NSArray的异同点
- NSSet和NSArray转化
- NSArray和NSSet对比
- NSArray和NSSet
- ios 中的NSSet NSArray的区别 在于存储的位置
- NSSet的方法,以及与NSArray、NSDicition之间的区别。
- Oracle 11g 的 自动内存管理
- 常用EXE文件反编译工具
- ELF文件
- 泛泰升级包下载工具Windows版介绍_下载_使用说明_编写原理[2014.3.24更新v0.3]
- MFC、共享库、静态库
- NSSet和NSArray的区别
- QDataStream类提供了二进制数据到QIODevice的串行化
- Partition List
- valgrind 的使用简介
- 创建Java内部类的编译错误处理
- 学习c++的50条忠告(初学者必看)
- IE,chrome浏览器下有乱码,火狐OK
- shell编程之tput
- Cache 的write back和write through