NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet,NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray(是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;
NSSet和我们常用NSArray区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希);开发文档中这样解释:你可以用套装当元素的顺序不重要时,作为数组的替代,并且测试对象是否包含在集合中的性能是一个考虑因素 - 当数组被排序时,对成员资格的测试比使用集合更慢。
比如你要存储元素A,一个散列算法直接就能直接找到甲应该存储的位置;同样,当你要访问甲时,一个散列过程就能找到一个存储的位置而对于NSArray的,若想知道甲到底在不在数组中,则需要遍历整个数组,显然效率较低了;
的NSSet,NSArray的都是类,只能添加可可对象,如果需要加入基本数据类型(整数,浮点,BOOL,双等),需要将数据封装成的NSNumber类型。
NSSet常用方法总结
+(ID)setWithObjects:OBJ1,OBJ2,...零 | 使用一组对象创建新的集合 |
- (ID)initWithObjects:OBJ1,OBJ2,......零 | 使用一组对象初始化新分配的集合 |
- (NSUInteger)计数 | 返回集合成员个数 |
- (BOOL)containsObject:OBJ | 确定集合是否包含对象obj |
- (BOOL)构件:OBJ | 确定集合是否包含对象obj |
- (NSEnumerator *)objectEnumerator | 返回集合中所有对象到一个NSEnumerator类型的对象 |
- (BOOL)isSubsetOfSet:NSSet中 | 判断集合是否是NSSet中的子集 |
- (BOOL)intersectsSet:NSSet中 | 判断两个集合的交集是否至少存在一个元素 |
- (BOOL)isEqualToSet:NSSet中 | 判断两个集合是否相等 |
NSMutableSet常用方法总结
- (ID)setWithCapcity:大小 | 创建一个有规模大小的新集合 |
- (ID)initWithCapcity:大小 | 初始化一个新分配的集合,大小为尺寸 |
- (无效)ADDOBJECT:OBJ | 添加对象obj到集合中 |
- (空)的removeObject:OBJ | 从集合中删除对象obj |
- (无效)removeAllObjects | 删除集合中所有对象 |
- (无效)unionSet:NSSet中 | 将NSSet中的所有元素添加到集合 |
- (无效)minusSet:NSSet中 | 从集合中去掉所有的NSSet的元素 |
- (无效)interectSet:NSSet中 | 集合和NSSet做交集运算 |