集合
这里说得集合与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 */ } |