在Foundation框架中,提供了一组单值对象的集合,且NSSet实例中的元素是无序的,同一个对象只能保存一个,类似于java中的HashSet。感觉java和OC太像了
1、继续不可变,NSSet
NSSet的创建类似于数组的创建,其实在Objective-c中NSSet和NSArray就很像,在后面会具体讲他们之间的区别
NSSet *set1 = [NSSet setWithObjects:@"one",@"two",@"three" nil];//同样nil不能少
//通过数组来创建
NSArray *array = [NSArray arrayWithObjects:@"hello",@"world",@"hao", nil];
NSSet *set2 = [NSSet setWithArray:array];
//通过已有集合构建
NSSet *set3 = [NSSet setWithSet:set2];
//集合中对象的个数
NSInteger *objNum = [set3 count];
//以数组的形式返回集合中的所有对象
NSArray *array1 = [set3 allObjects];
//看集合中是否包含某对象
BOOL isContain = [set3 containsObject:@"one"];
//集合set2是否是集合set3的子集合
BOOL isSub = [set2 isSubsetOfSet:set3];
//两个集合是否相同
BOOL isEqual = [set3 isEqualToSet:set2];
//在原有集合的基础上新加一个元素创建一个新集合
NSSet *set4 = [set3 setByAddingObject:@"yade"];
//把两个集合合并成一个新的集合
NSSet *set5 =[set3 setByAddingObjectsFromSet:set2];
//把一个集合一个数组合并成一个新集合
NSSet *set6 = [set5 setByAddingObjectsFromArray:array];
2、可变集合NSMutableSet
继承自NSSet
//首先还是创建两个再说
NSMutableSet *mSet1 = [NSMutableSet setWithObjects:@"one",@"two",@"1", nil];
NSMutableSet *mSet2 = [NSMutableSet setWithObjects:@"three",@"four",@"1" nil];
//在mSet1中去除和mSet2中相同的元素,返回的是mSet2
[mSet2 minusSet:mSet1];
//获得两个集合的交集,返回的是mSet1
[mSet1 intersectSet:mSet2];
//取并集
[mSet1 unionSet:mSet2];
//将一个一个集合中的内容设置成另一个集合中的内容
[mSet1 setSet:mSet2];
//删除对象
[mSet1 removeObject:@"one"];
//删除所有
[mSet1 removeAllObjects];