一、NSSet
1> NSSet是一组单值对象的不可变集合,集合中元素没有顺序;2> 操作包括:搜索、添加、删除集合中的元素(仅用于可变集合)、比较两个集合,计算两个集合的交集和并集等。
3> 常用方法:
使用一系列对象创建新集合:
+ (instancetype)setWithObjects:obj1, obj2, ..., nil;
使用一系列对象初始化新分配的集合:
- (instancetype)initWithObjects:(const id [])objects count:(NSUInteger)cnt;
确定集合是否包含anObject对象:
- (BOOL)containsObject:(id)anObject;
使用member:方法确定集合是否包含object对象:
- (id)member:(id)object;
为集合中的所有对象返回一个NSEnumerato对象:
- (NSEnumerator *)objectEnumerator;
确定receiver的每个元素是否都出现在otherSet中:
- (BOOL)isSubsetOfSet:(NSSet *)otherSet;
确定是否receiver中至少一个元素出现在对象otherSet中:
- (BOOL)intersectsSet:(NSSet *)otherSet;
确定两个集合是否相等:
- (BOOL)isEqualToSet:(NSSet *)otherSet;
实例,
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"Jack",@"jim",@"rose",@"haha",nil];
NSString *str =[s2 anyObject];
NSLog(@"%@",str);
NSLog(@"%ld",s2.count);
二、NSMutableSet
1> NSMutableSet是NSSet的子类,是可变集合;2> 常用方法:
创建新集合,
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@"hack"];
删除元素
[s removeObject:@"hack"];
[s removeAllObjects];
三、 NSSet和NSArray的对比
1> 共同点* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序