OC:OC中的集合类-NSSet(2)
/*
NSSet 集合
在一个NSSet对象中,某个特定的对象只能出现一次。
NSSet对象最大的用处是检查某个对象是否存在。速度快
NSSet与NSArray比较
相同:1.都用来存放OC对象
2.都不可以直接存储基本数据类型、结构体、枚举
3.本身都不可变,但是都有一个可变的子类
区别:1.NSArray是有顺序的, NSSet是无序的
2.NSSet里面的元素是不重复的
*/
//========================================================
//创建一个空的set,里面不能再添加元素
// NSSet *set1 = [NSSet set];
//创建set,里面有一个元素
NSSet *set2 = [NSSet setWithObject:@"abc"];
//创建多个元素的set
Car *car1 = [Car new];
Car *car2= [Car new];
NSSet *set3 = [NSSet setWithObjects:car1,car2,@"abc", nil];
//得到set元素个数
NSUInteger count = set3.count;
[set3 count];
NSLog(@"%ld",count);
//打印set (打印出来的元素顺序不固定)
NSLog(@"%@",set3);
//获取set中全部的元素 返回值是NSArray
NSArray *ary = [set3 allObjects];
//取set中的一个元素 没有顺序,任意取出一个元素
[set3 anyObject];
//判断集合中是否包含某个对象
[set3 containsObject:@"abc"];//返回BOOL型
if([set3 containsObject:@"abc"])
{
NSLog(@"set 中有该对象");
}
else
{
NSLog(@"set 中不包含该对象");
}
[set3 member:@"abc"];//返回BOOL型
if([set3 member:@"abc"])
{
NSLog(@"set 中有该对象");
}
else
{
NSLog(@"set 中不包含该对象");
}
//==========================================================
// NSMutableSet 可变集合
//初始化可变集合
NSMutableSet *set4 = [NSMutableSet set];
//添加元素
[set4 addObject:[Car new]];
//把一个数组中的元素添加到当前set
NSArray *ary2 = @[@"jereh",@"ios"];
[set4 addObjectsFromArray:ary2];
NSLog(@"%@",set4);
//删除。由于没有顺序,所以不能按照索引位置删除确定的对象
//删除一个元素
[set4 removeObject:@"ios"];
//删除全部元素
[set4 removeAllObjects];
//遍历set(用快速遍历)
NSMutableSet *set5 = [NSMutableSet setWithObjects:@"a",@"b",@"c",@"d", nil];
NSArray *ary3 = @[@"jere"];
[set5 addObjectsFromArray:ary2];
[set5 addObjectsFromArray:ary3];
for (id obj in set5) {
NSLog(@"%@",obj);
}
//将一个集合的所有元素添加到当前集合
NSLog(@"%@",set4);
NSLog(@"%@",set5);
NSMutableSet *set6 = [NSMutableSet setWithObject:@"I love you."];
[set6 unionSet:set5];
NSLog(@"%@",set6);
//判断两个集合是否相等
if ([set5 isEqualToSet:set6] == YES) {
NSLog(@"两个集合相等");
}
else
{
NSLog(@"两个集合不相等");
}
//判断两个集合的交集是否存在至少一个元素
[set6 intersectsSet:set5]; //BOOL
[set6 intersectSet:set5]; //void
if ([set6 intersectsSet:set5] == YES) {
NSLog(@"两个集合有交集 ");
}
else
{
NSLog(@"两个集合没有交集");
}