集合(十二)

集合

这里说得集合与collection集合有区别。iOS中用得集合是NSSet和NSMutableSet。

集合存储的数不能重复,元素必须唯一。存储的元素是无序的。存储的元素必须是对象类型的。

不可变集合NSSet

初始化initWithObjects:

NSSet *set1 = [[NSSet alloc] initWithObjects:@"A",@"B",@"C", nil];//也是按照哈希排放的顺序

        NSLog(@"%@",set1);/*

                           2015-04-17 15:23:35.379 OCLesson5_字典[1725:95222] {(

                           A,

                           B,

                           C

                           )}

                           */

与数组类似,往集合里边放东西,以nil作为结束标志。

取值member:

        NSString *s111 = [set1 member:@"A"];

        NSLog(@"%@",s111);//2015-04-17 15:26:41.712 OCLesson5_字典[1742:96222] A

member:@"A",若集合里,有@”A”元素,则返回这个元素A

取值:anyObject:

这里说是取集合里的任意一个元素,其实在存储元素的时候,按照hash算法算好后的顺序存放后,取第一个数。

        //anyObject:一般是按照哈希排放的顺序后拿第一个

        NSString *s222 = [set1 anyObject];

        NSLog(@"%@",s222);

是否包含:containsObject

        //是否包含

        BOOL b1 = [set1 containsObject:@"A"];

        NSLog(@"%d",b1);//2015-04-17 15:35:03.398 OCLesson5_字典[1814:98775] 1

可变集合NSMutableSet

        //NSmutableSet(可变)

        NSMutableSet *mSet1 = [NSMutableSet set];

        [mSet1 addObject:@"A"];

        [mSet1 addObject:@"B"];

        [mSet1 addObject:@"C"];

        [mSet1 addObject:@"A"];

        [mSet1 addObject:@"A"];

        NSLog(@"%@",mSet1);

删除

        //删除

        [mSet1 removeObject:@"A"];

        [mSet1 removeAllObjects];

获取元素个数

                [mSet1 count];

例子:

NSCountedSet *cdSet1 = [[NSCountedSet alloc]init];

        [cdSet1 addObject:@"A"];

        [cdSet1 addObject:@"B"];

        [cdSet1 addObject:@"C1"];

        [cdSet1 addObject:@"A"];

        [cdSet1 addObject:@"A"];

        NSLog(@"%@",cdSet1);//2015-04-17 15:46:43.625 OCLesson5_字典[1917:102264] <NSCountedSet: 0x100300250> (A [3], B [1], C1 [1])

获取一个元素在这个集合中出现的次数

        //元素在集合中的个数

        NSUInteger u11 = [cdSet1 countForObject:@"A"];

        NSLog(@"%lu",u11);//2015-04-17 15:48:17.239 OCLesson5_字典[1933:102823] 3

for in快速遍历

在for in括号内,in的后面是conllection集合(Array之类的),in 的前面是conllection集合里边的元素的类型,然后创建一个对象。

NSArray的快速遍历

        //for in快速遍历

       

        NSArray *array = [NSArray arrayWithObjects:@"A",@"B",@"C",@"D", nil];

        //in后面是conlection容器类(集合),int前面的东西是in后面集合的元素类型,并创建一个对象

        //从容器里一个一个的往外拿。拿完为止。

        // in 后面是array数组(集合),数组里的元素都是NSString类型的,所以in前面就是NSString类型的。

        for (NSString *s in array) {

            NSLog(@"%@",s);/*

                            2015-04-17 15:54:59.243 OCLesson5_字典[1958:104217] A

                            2015-04-17 15:54:59.243 OCLesson5_字典[1958:104217] B

                            2015-04-17 15:54:59.243 OCLesson5_字典[1958:104217] C

                            2015-04-17 15:54:59.243 OCLesson5_字典[1958:104217] D

                            */

        }

NSDictionary的快速遍历:

NSDictionary的快速遍历,取出来的值是key,因为如果取出来的是value,那么key就永远取不出来了。

NSDictionary *dict12 = [NSDictionary dictionaryWithObjectsAndKeys:@"AA",@"11",@"BB",@"22",@"CC",@"33", nil];

        //字典的快速便利取出的是key值

        //如果取出的是value,那么key永远都取不出来了。

        for (NSString *s in dict12) {

            NSLog(@"%@:%@",s,[dict12 objectForKey:s]);/*

                                                       2015-04-17 16:02:53.130 OCLesson5_字典[2005:106552] 33:CC

                                                       2015-04-17 16:02:53.130 OCLesson5_字典[2005:106552] 11:AA

                                                       2015-04-17 16:02:53.130 OCLesson5_字典[2005:106552] 22:BB

                                                       */

        }

        NSSet *set12 = [NSSet setWithObjects:@"A",@"B",@"C", nil];

        for (NSString *s in set12) {

            NSLog(@"%@",s);/*

                            2015-04-17 16:06:39.421 OCLesson5_字典[2023:107521] A

                            2015-04-17 16:06:39.421 OCLesson5_字典[2023:107521] B

                            2015-04-17 16:06:39.422 OCLesson5_字典[2023:107521] C

                            */

        }

原文地址:https://www.cnblogs.com/DevinSMR/p/5118600.html