方法 | 描述 |
---|---|
+(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 | 判断两个集合是否相等 |
方法 | 描述 |
---|---|
-(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效率高。
- 判断集合A是否是集合B的子集,可以使用 [A isSubsetOfSet:B]。
- 判断集合A和集合B是否有交集,可以使用[A intersects:B]。
指针数组,用起来跟NSMutableArray类似,可以存储强/弱引用对象,也可以存储普通的C指针。
NSHashTable相当于NSMutableSet,但提供了比NSMutableSet更多的操作选项,尤其是在对弱引用关系的支持上。
- NSHashTable是可变的。
- 它可以持有元素的弱引用,而且在对象被销毁后能正确地将其移除。
- 它的成员可以在添加时被拷贝。
- 它的成员可以使用指针来标识是否相等及做hash检测。
- 它可以包含任意指针,其成员没有限制为对象。我们可以配置一个NSHashTable实例来操作任意的指针,而不仅仅是对象。
NSMapTable 可以处理的 key -> obj
式映射如 NSDictionary
,但它也可以处理 obj -> obj
的映射 - 也被称为 “关联数组” 或简称为 “map”。
// 这种跟NSMutableDictionary的效果是一样的
NSMapTable *keyToObjectMapping = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableStrongMemory];
// 对象到对象的映射
NSMapTable *objectToObjectMapping = [NSMapTable mapTableWithStrongToStrongObjects];