NSSet 用法


        //集合NSSet

        //集合也是儲存對象,和字典一樣也是無序存儲

        //集合中里面的元素不能重復

        //集合里面的元素可以隨機取出

        

        //用數組放到集合中

        NSArray *a10 = @[p1 , p2 , p3 , p4 , p5];

        NSSet *set1 = [NSSet setWithArray:a10];

        

        //給集合放一個對象

        NSSet *set2 = [NSSet setWithObject:p1];

        

        //給集合放多個對象

        //如果集合里面的元素相同了,會覆蓋原來的那個

        NSSet *set3 = [NSSet setWithObjects:p1 , p2 , p3 , p4 , nil];

        

        //給集合放集合

        NSSet *set4 = [NSSet setWithSet:set2];

        

        NSLog(@"%@" , set4);

        //  要打印集合中所有元素, 需要借助數組來完成

        // 把集合里面的元素取出來 放大數組里面就可以循環打印

        NSArray *array01 = [set3 allObjects];

        for (int i = 0; i < [array01 count]; i++) {

            NSLog(@"%@" , [array01 objectAtIndex:i]);

        }

        

        //既然集合里面的 元素是無序的,那么要想從集合中取出一個元素,這個元素肯定是隨機的

        //從集合里面隨機取出一個元素

        NSLog(@"*****************************************");

        Person *p01 = [set3 anyObject];

        NSLog(@"%@" , p01);

        

        

        //能夠放相同元素的集合

        //NSCountedSet 集合中可以放相同的元素,並且能算出一個元素相同了多少次,也就是重復了多少次

        NSCountedSet *set5 = [[NSCountedSet alloc] initWithObjects:p1 , p1 , p3 , p4 , p5  , p3 , p3 , p2  , p4 , p2 , nil];

        //count 按照種類來分

        NSLog(@"%ld" , [set5 count]);

        //對集合中某一個元素種類計數

        NSLog(@"%ld" , [set5 countForObject:p3]);

        

        //可變集合

        NSMutableSet *mset1 = [NSMutableSet setWithObjects:p5 , p3 , p2 , nil];

        

        // 刪除某個元素

        [mset1 removeObject:p3];

        [mset1 removeAllObjects];//刪除多個元素

        NSLog(@"%@" , mset1);

        

        

        //三大容器總結

        /*

        一、相同點

         都是容器 都能存儲多個元素,存儲的元素都必須是對象

        二、不同點

         1、特點

           數組存儲對象時有序的,元素可以重復

           字典存在一一對應關系,鍵值對,key值必須唯一,不能重復

           集合存儲的院士是無序的,而且元素之間存在互異性

         2、取值方面

           數組 通過下標取值

           字典 通過鍵值key進行取值

           集合 通過anyObject隨機取值

         

         3、能否利用for循環

           數組 直接利用for循環

           字典 借助allkeys數組進行for循環遍歷

           集合 借助一個數組,把set集合中所有元素放進這個數組中

        */

        

      

        NSArray *array02 = @[p2 , @"a" , p2 , @"b" , p1];

        

        //循環打印數組所有元素,只打印字符串,不打印person對象

        //isKindOfClass判斷一個對象是否是某一類,或者這個類的子類

        for (int i = 0; i < [array02 count];i++) {

            id p = [array02 objectAtIndex:i];

            //判斷p是否是NSString類

            if ([p isKindOfClass:[NSString class]]) {

                // 如果是字符串久打印

                NSLog(@"%@" , p);

            }

        }   

        

        //isMemberOfClass判斷一個對象是否是一個類,不會判斷子類

        Student *s1 = [[Student alloc] initWithName:@"ddfdfjk" andAge:45];

        Student *s2 = [[Student alloc] initWithName:@"dsfu" andAge:456];

        NSArray *array03 = @[p2 , s1 , p2 , s2 , p1];

        

        for (int i = 0; i < [array03 count];i++) {

            id q = [array03 objectAtIndex:i];

            //判斷p是否是NSString類

            if ([q isMemberOfClass:[Person class]]) {

            // 如果是字符串久打印

                NSLog(@"%@" , q);

            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM