OC:OC中的集合类-NSSet(2)

OC:OC中的集合类-NSSet(二)

/*

         NSSet   集合

         在一个NSSet对象中,某个特定的对象只能出现一次。

         NSSet对象最大的用处是检查某个对象是否存在。速度快

         

         NSSetNSArray比较

         相同: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(@"两个集合没有交集");

        }