oc 知识总结四 (NSSet、NSMutableSet)

来源:互联网 发布:知乎 金庸 古龙 编辑:程序博客网 时间:2024/05/16 14:22
注:集合是一组单值对象的集合,同一个对象只能保存一个,且集合中的元素是无序的。

一、NSSet(不可变集合)

1、NSSet的创建
(1)创建一个空集合

 NSSet *set = [NSSetset];

(2)创建单个对象的集合

NSSet *set = [NSSetsetWithObject:@"张三"];

(3)创建多个对象的集合

方式一:使用setWithObjects:

NSSet *set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

方式二:使用类方法

NSSet *set2=[[NSSetalloc]initWithObjects:@"wa",@"haha",nil];

2、NSSet的常用方法

3、常用方法示例
(1)代码部分

        //isEqual是判断两个对象是否是同一个对象

       //集合存入数据的顺序和输出顺序不一定一样,集合元素是无序的。

       //集合是一组单值对象的集合,同一个对象只能保存一个

        // 1、创建一个空集合,此处的set是集合

        NSSet *set=[NSSetset];

        // 2、创建单个对象的集合

        NSSet *set0=[NSSetsetWithObject:@"张三"];

        // 3、创建多个对象的集合

        //方式一:

        NSSet *set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

        //方式二:

        NSSet *set2=[[NSSetalloc]initWithObjects:@"wa",@"haha",nil];

        //NSSet常用的方法,无符号类型要用%lu

        NSUInteger count =[set1count];

        NSLog(@"集合1%lu个元素",count);

       //以数组的形式获取集合中的所有对象

        NSArray *allObjects=[set2allObjects];

       //返回集合中的任意一个对象(随机取对象)

        id obj1=[set1anyObject];

        NSLog(@"randWord= %@",obj1);

        //判断是否包含某个对象(isContain/isExit)

        BOOL isContain =[set2containsObject:@"wa"];

        NSLog(@"%@",isContain?@"包含":@"不包含");

       //判断两个集合中的元素是否存在相同元素的对象,两个集合是否有交集

        BOOL isIntersect=[set2intersectsSet:set1];

        NSLog(@"%@",isIntersect?@"存在相同元素的对象":@"不存在相同元素的对象");

       //判断两个集合中的元素是否完全匹配

        BOOL isEqual=[set2isEqualToSet:set1];

       //判断一个集合是否是另一个集合的子集合,如果set2中所有元素都存在于set1,返回true

        BOOL isSubSet=[set2isSubsetOfSet:set1];

        NSLog(@"%@",isSubSet?@"set2set1的子集合":@"set2不是set1的子集合");

       //1.向集合中添加一个新元素,返回一个新的集合

        NSSet *newSet=[set1setByAddingObject:@"admin"];

        NSLog(@"%@",newSet);

        

       //2.向集合中添加一个新元素,改变原来的集合,一般不使用

        set1=[set1 setByAddingObject:@"admin"];

         NSLog(@"%@",set1);

       //将集合A的所有元素赋值给另一个集合B,返回一个新的集合C,自身是不改变的

        NSSet *newSet1=[set1setByAddingObjectsFromSet:set2];

        NSLog(@"%@",newSet1);

        NSLog(@"%@,%@",set1,set2);

        //遍历方法1

        for(NSString *objin newSet1){

            NSLog(@"%@",obj);

        }

        //遍历方法2

        NSArray *newArr=[newSet1allObjects];

        for(int i=0;i<newSet1.count;i++){

            NSString *str=[newArrobjectAtIndex:i];

            NSLog(@"%@",str);

        }



(2)输出结果

2、NSMutableSet(可变集合)

1、简介:可变集合继承自NSSet
2、可变集合的创建
(1)创建一个空的集合

 NSMutableSet *set=[NSMutableSetset];

(2)创建单个对象的集合

 NSMutableSet *set = [NSMutableSetsetWithObject:@"1"];

(3)创建多个对象的集合

NSMutableSet *set1 = [NSMutableSetsetWithObjects:@"1",@"2",@"3" ,nil];

NSMutableSet *set2 = [[NSMutableSetalloc]initWithObjects:@"3",@"2",@"1",nil];

3、常用方法


4、可变集合的交并差
(1)代码部分

 

        NSMutableSet *set1=[NSMutableSetset];

        [set1 addObject:@"张三"];

        [set1 addObject:@"李四"];

        [set1 addObject:@"王五"];

        

        [set1 removeObject:@"王五"];

        [set1 addObject:@"李四"];

        NSMutableSet *set2=[NSMutableSetset];

        [set2 addObject:@"张三"];

        [set2 addObject:@"李斯"];

        [set2 addObject:@"王无"];

        //并集

        [set1 unionSet:set2];

        for(NSString *namein set1){

            NSLog(@"并集:%@",name);


        }

        //交集

        [set1 intersectSet:set2];

        for(NSString *namein set1){

            NSLog(@"交集:%@",name);


       }

        //差集(A中存在而不存在B中的对象)

        [set1 minusSet:set2];

        for(NSString *namein set1){

                NSLog(@"差集:%@",name);

            

        }


(2)输出结果
1>并集的结果:

2>交集的结果

3>差集的结果



1 0
原创粉丝点击