Objective-c 集合对象

  集合(NSSet)是一组单值对象的组合,集合对象的操作包括:搜索,添加,删除集合中的成员(可变集合的功能),比较两个集合,计算两个集合的交集,并集等。

  下面来看下(NSSet)的方法:

  

 

 

  1)集合的构建

  

 1 // 构建集合的三种方法
 2 
 3 #import <Foundation/Foundation.h>
 4 
 5 int main(int argc , const char *argv[]){
 6     @autoreleasepool {
 7         NSSet *set1 = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
 8         for(NSString *temp1 in set1){
 9             NSLog(@"temp1 = %@",temp1);
10         }
11         
12         NSArray *array = @[@"aa",@"bb",@"cc"];
13         NSSet *set2 = [NSSet setWithArray:array];
14         for(NSString *temp2 in set2)
15             NSLog(@"temp2 = %@",temp2);
16         
17         NSSet *set3 = [[NSSet alloc] initWithObjects:@"aa",@"bb"@"cc",nil];
18         for(NSString *temp3 in set3)
19             NSLog(@"temp3 = %@",temp3);
20     }
21 }

  2)集合的遍历

  

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface NSString (print)
 4 
 5 - (void)print;
 6 - (void)show:(NSString *)str;
 7 
 8 @end
 9 
10 @implementation NSString (print)
11 
12 - (void)print{
13     NSLog(@"%@",self);
14 }
15 - (void)show:(NSString *)str{
16     NSLog(@"%@ : %@",str,self);
17 }
18 
19 @end
20 int main(int argc , const char *argv[]){
21     @autoreleasepool {
22         NSSet *set = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
23         for(NSString *temp in set)
24             NSLog(@"temp = %@",temp);
25         
26         NSLog(@"--------------------------");
27         [set enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
28             NSLog(@"obj = %@",obj);
29         }];
30         
31         NSLog(@"---------------------------");
32         [set makeObjectsPerformSelector:@selector(print)];
33         
34         NSLog(@"----------------------------");
35         [set makeObjectsPerformSelector:@selector(show:) withObject:@"this is "];
36         
37         NSLog(@"-----------------------------");
38         NSEnumerator *emr = [set objectEnumerator];
39         NSString *temp = nil;
40         while(temp = [emr nextObject])
41             NSLog(@"temp = %@",temp);
42     }
43     return 0;
44 }

 

 3) 集合的比较

  

 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc , const char *argv[]){
 4     @autoreleasepool {
 5         NSSet *set = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
 6         for(NSString *temp in set)
 7             NSLog(@"temp = %@",temp);
 8         
 9         BOOL ishas = [set containsObject:@"lisi"];
10         if(ishas)
11             NSLog(@"has lisi");
12         else
13             NSLog(@"no lisi");
14         
15         NSString *str = [set member:@"aaaa"];
16         NSLog(@"str = %@",str);
17         
18         NSSet *set2 = [set setByAddingObject:@"xiaoliu"];
19         NSLog(@"set2 = %@",set2);
20         
21         NSSet *set3 = [set setByAddingObjectsFromArray:@[@"aa",@"bb",@"cc"]];
22         NSLog(@"set3 = %@",set3);
23         
24         NSSet *set4 = [NSSet setWithObjects:@"zhangsan",@"lisi",nil];
25         BOOL issub = [set4 isSubsetOfSet:set];
26         if(issub)
27             NSLog(@"set4 is set sub class");
28         else
29             NSLog(@"set4 no set sub class");
30         
31         BOOL isinterset = [set intersectsSet:set4];
32         if(isinterset)
33             NSLog(@"set and set4 has intersect");
34         else
35             NSLog(@"set and set4 no intersect");
36         
37         BOOL isequal = [set isEqualToSet:set2];
38         if(isequal)
39             NSLog(@"set = set2");
40         else
41             NSLog(@"set != set2");
42         
43     }
44     return 0;
45 }

 

 

  4)可变集合(NSMutable)

  

 

 

  下面通过一个例子来说可变集合的用法:

  

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface NSString (print)
 4 -(void)print;
 5 -(void)show:(NSString *)str;
 6 @end
 7 
 8 @implementation NSString(print)
 9 -(void)print{
10     NSLog(@"%@",self);
11 }
12 -(void)show:(NSString *)str{
13     NSLog(@"%@ : %@",str,self);
14 }
15 @end
16 
17 int main(int argc,char **argv){
18     @autoreleasepool {
19         NSMutableSet *mset = [NSMutableSet setWithObjects:@"zhangsan",@"lisi",@"wangwu", nil];
20         
21         [mset addObject:@"zhaoliu"];
22         NSLog(@"mset = %@",mset);
23         
24         [mset addObjectsFromArray:@[@"111",@"222",@"333"]];
25         NSLog(@"mset = %@",mset);
26         
27         [mset removeObject:@"111"];
28         NSLog(@"mset = %@",mset);
29         
30         NSSortDescriptor *sortdesr = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES];
31         NSArray *sortset = [mset sortedArrayUsingDescriptors:@[sortdesr]];
32         NSLog(@"mset sort = %@",sortset);
33         
34         NSArray *array = [mset allObjects];
35         NSLog(@"array = %@",array);
36         NSSet *set2 = [NSSet setWithArray:array];
37         NSLog(@"set2 = %@",set2);
38         
39         NSString *str = [mset anyObject];
40         NSLog(@"str = %@",str);
41         
42         [mset setSet:set2];
43         NSLog(@"mset = %@",mset);
44         
45         [mset removeAllObjects];
46         NSLog(@"mset = %@",mset);
47     }
48 }

 

  

  

  

  

 

 

      

posted @ 2016-03-12 14:47  雨雪先行  阅读(220)  评论(0编辑  收藏  举报