Objective-C 集合

集合(NSSet)

NSSet 类是一组单值对象的集合,而且 NSSet 对象中元素是无序的,同一个对象只能保存一个,并且,他也分为可变 (NSSet) 和不可变 (NSMutableSet) 两种。

不可变集合(NSSet)

1.创建一个不可变集合

NSSet *set1 = [NSSet setWithObjects:@"6",@"8",@"10", nil];
NSSet *set2 = [[NSSet alloc] initWithSet:set1];
NSSet *set3 = [[NSSet alloc] initWithArray:array];
NSSet *set4 = [NSSet setWithArray:array];  
NSSet *set5 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three", nil];

2.集合对象的长度

NSInteger count = [set2 count];

3.将集合转换为数组

NSArray *array = [set1 allObjects];

4.获取集合中的任意一个对象

id object = [set3 anyObject];

5.获取所有集合元素

NSArray *array = [set allObjects];

6.通过已有集合 1 和集合 2 创建新集合 3

NSSet *set3 = [set1 setByAddingObjectsFromSet:set2];

7.通过已有集合与数组对象创建新集合

NSSet *set2 = [set1 setByAddingObjectsFromArray:array];

8.判断集合中是否包含某个字符串,包含返回 YES,不包含返回 NO

BOOL isContain = [set containsObject:@"abc"];

9.判断两个集合中是否存在相同的元素

BOOL isIntersect = [set intersectsSet:set2];

10.判断两个集合是否完全相同

BOOL isEqual = [set4 isEqual:set1];

11.判断一个集合是否是另一个集合的子集

BOOL isSubset = [set4 isSubsetOfSet:set2];

可变集合(NSMutableSet)

1.创建一个可变集合

//创建一个长度为 6 的可变集合
NSMutableSet *set1 = [NSMutableSet setWithCapacity:6];
NSMutableSet *set2 = [NSMutableSet set];
NSMutableSet *set3 = [NSMutableSet setWithObjects:@"1",@"2", nil];
NSMutableSet *set4 = [NSMutableSet setWithObjects:@"a",@"2", nil];
NSMutableSet *set5 = [NSMutableSet setWithObjects:@"1",@"b", nil];

2.获取两个集合中元素的交集

[set1 intersectSet:set2];

3.获取两个集合中元素的并集

[set2 unionSet:set3];

4.删除一个指定对象

[set1 removeObject:@"1"];

5.删除集合所有元素

[set1 removeAllObjects];

6.像集合中删除一个集合的所有数据

[set minusSet:obj];

集合的遍历

使用 objectEnumerator 进行遍历

NSEnumerator *enumerator = [set objectEnumerator];
for (NSObject *object in enumerator) {  
    NSLog(@"set:%@", object);  
}