| 方法 | 描述 |
|---|---|
| +(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];