oc 数组,字典,集合 库方法练习


July 31,2014




  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, const charchar * argv[])  
  4. {  
  5.     //初始化一个数组  
  6.     NSArray *array1 = [NSArray arrayWithObject:@"bin"];  
  7.     NSLog(@"array = %@",array1);//arrayWithObject只能添加一个元素  
  8.       
  9.     NSArray *array2 = [NSArray arrayWithObjects:@"bin",@"ban", nil nil];//arrayWithObjects可以添加多个元素,且nil,不能删除  
  10.     NSLog(@"array = %@",array2);  
  11.   
  12.     //用另一个数组初始化一个数组  
  13.     NSArray *array3 = array2;  
  14.     NSLog(@"array = %@,%p,%p",array3,array3,array2);  
  15.     NSArray *array3b = [NSArray arrayWithArray:array3];  
  16.     NSLog(@"array = %@,%p,%p",array3b,array3b,array2);  
  17.       
  18.     //求数组的元素  
  19.     NSInteger arrayCount = [array3 count];  
  20.     NSLog(@"这个数组的元素有 %ld",arrayCount);  
  21.       
  22.     //通过下标取数组的元素  
  23.     NSString *str = [array3 objectAtIndex:1];  
  24.     NSLog(@"str = %@",str);  
  25.       
  26.     //追加数组元素  
  27.     NSArray *array4 = [array3 arrayByAddingObject:@"bgn"];//(一个元素)  
  28.     NSLog(@"array4 = %@",array4);  
  29.     NSArray *array5 = [array3 arrayByAddingObjectsFromArray:array1 ];//追加一个数组  
  30.     NSLog(@"array5 = %@",array5);  
  31.       
  32.       
  33.     //components  成分,  
  34.     //用指定的字符串将数组中的元素连接起来变为一个字符串  
  35.     NSString *str2 = [array5 componentsJoinedByString:@"*"];  
  36.     NSLog(@"str2 = %@",str2);  
  37.       
  38.     //判断数组中是否含有一个对象  
  39.     BOOL isContain = [array5 containsObject:@"bin"];  
  40.     NSLog(@"isContain = %d",isContain);  
  41.       
  42.     //判断一个是元素在数组中的下标  
  43.     NSInteger index = [array4 indexOfObject:@"bin" inRange:NSMakeRange(01)];//可以不用inrange,在指定范围内存在的话就返回正确的值,  
  44.     NSLog(@"index = %ld",index);  
  45.       
  46.     //可变数组--------------  
  47.     NSMutableArray *marray1 = [NSMutableArray array];//空数组  
  48.     NSLog(@"marray1 = %@",marray1);  
  49.       
  50.     NSMutableArray *marray2 = [NSMutableArray arrayWithCapacity:6];//告诉编译器大概有6个元素,方便内存优化  
  51.     NSLog(@"marray2=%@",marray2);  
  52.       
  53.     //添加元素  
  54.     NSMutableArray *marray3 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];  
  55.     NSLog(@"marray = %@",marray3);  
  56.       
  57.     [marray3 addObject:@"d"];//在后面追加一个元素  
  58.     [marray3 insertObject:@"e" atIndex:3];//在指定位置添加一个元素  
  59.      NSLog(@"marray = %@",marray3);  
  60.     [marray3 removeObject:@"e"];//删除指定对象  
  61.       
  62.     //数组的遍历  
  63.     for (int i = 0; i < [marray3 count]; i ++) {  
  64.         NSString *str = [marray3 objectAtIndex:i];  
  65.         NSLog(@"str = %@",str);  
  66.     }//上面的方法效率很低  
  67.       
  68.     for (NSString *str3 in marray3) {  
  69.         NSLog(@"str3 = %@",str3);//在这里面不能修改数组的元素,无论增删改  
  70.     }  
  71. //    for in实际上是快速枚举,跟for循环意义上还是有区别的。  
  72. //    NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,你不能通过添加或删除对象这类操作来改变数组容器。如果你这么做了,枚举器会很困惑,而你将得到未定义的结果。  
  73.       
  74.       
  75.       
  76.     //字典  
  77.     //字典是以键值对的形式存在的,并且键值是成对出现的,不会单独只有键或只有值(字典的打印使用{},表示的)  
  78.       
  79.     //初始化一个字典  
  80.     NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"a",@"k1",@"b",@"k2",@"c",@"k3", nil nil];  
  81.     NSLog(@"dic1 = %@",dic1);//必须成对初始化  
  82.       
  83.     //输出字典的数量  
  84.     NSLog(@"这个字典的数量 = %lu",[dic1 count]);//%ld  也可以输出  
  85.       
  86.     //获取全部的key和object  
  87.     NSArray *keyarray=[dic1 allKeys];  
  88.     NSArray *valuearray=[dic1 allValues];  
  89.     NSLog(@"keyarray=%@,valuearray=%@",keyarray,valuearray);  
  90.       
  91.       
  92.     //可变字典  
  93.     NSMutableDictionary *mdic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"iphone",@"k1",@"ipad",@"k2",@"pro",@"k3",@"ari",@"k4", nil nil];  
  94.     NSLog(@"mdic=%@",mdic);  
  95.       
  96.     //把一个字典添加到另外一个字典后面  
  97.     NSDictionary *dic4=[NSDictionary dictionaryWithObject:@"mini" forKey:@"k5"];  
  98.     //可变字典的追加  
  99.     [mdic addEntriesFromDictionary:dic4];  
  100.     //直接添加键值对  
  101.     [mdic setValue:@"ipod" forKey:@"k6"];  
  102.     //通过key删除指定的value  
  103.     [mdic removeObjectForKey:@"k6"];  
  104.     //删除所有  
  105. //    [mdic removeAllObjects];  
  106. //     NSLog(@"mdic=%@",mdic);  
  107.       
  108.     //批量删除一个字典内容  
  109.     NSArray *arrayk=[NSArray arrayWithObjects:@"k3",@"k4",@"k5", nil nil];  
  110.     [mdic removeObjectsForKeys:arrayk];  
  111.     NSLog(@"mdic=%@",mdic);  
  112.   
  113.     //----字典的遍历-----//从后面开始遍历  
  114.     for (id key in mdic) {  
  115.         id object = [mdic objectForKey:key];  
  116.         NSLog(@"value = %@",object);  
  117.     }  
  118.       
  119.     //NSSet集合  
  120.     //NSSet集合跟数组差不多,只不过集合中不能存放相同的对象.是一组单值对象的集合,并且被存入集 中的元素是无序的,同样也有NSMutableSet和NSSet;  
  121.     NSSet *set1 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb",@"ccc", nil nil];  
  122.     NSSet *set2 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb", nil nil];  
  123.     NSLog(@"set1 = %@",set1);//打印形式set = {()}  
  124.       
  125.     //判断一个集合时候包含某个元素  
  126.     BOOL isContain1 = [set1 containsObject:@"aaa"];  
  127.     NSLog(@"isContain1 = %d",isContain1);  
  128.       
  129.     //判断集合是否有交集  
  130.     BOOL isIntersert = [set1 intersectsSet:set2];  
  131.     NSLog(@"isIntersert = %d",isIntersert);  
  132.       
  133.     //判断集合中得元素是否一样  
  134.     BOOL isEqual = [set2 isEqualToSet:set1];  
  135.     NSLog(@"isEqual = %d",isEqual);  
  136.       
  137.     //判断set1是否为set2的子集  
  138.     BOOL isSubSet = [set2 isSubsetOfSet:set1];  
  139.     NSLog(@"isSubSet = %d",isSubSet);  
  140.       
  141.     //向一个集合中追加一个元素  
  142.     NSSet *set3 = [set1 setByAddingObject:@"ddd"];  
  143.     NSLog(@"set3 = %@",set3);  
  144.   
  145.       
  146.     NSMutableSet *set4 = [NSMutableSet setWithObjects:@"1",@"2", nil nil];  
  147.     NSMutableSet *set5 = [NSMutableSet setWithObjects:@"1",@"3", nil nil];  
  148.   
  149.     [set4 intersectSet:set5];//并集   set4 = {(1)}  
  150.     NSLog(@"set4 = %@",set4);  
  151.     [set4 unionSet:set5];  
  152.     NSLog(@"set4 = %@",set4);  
  153.       
  154.     //[set4 minusSet:set5];//set4将去除set5中相同的元素  
  155.     //NSLog(@"set4 = %@",set4);  
  156.       
  157.     return 0;  

  1. <pre code_snippet_id="99752" snippet_file_name="blog_20131206_1_6122411" name="code" class="objc">//  
  2. //  main.m  
  3. //  OC_学习_数组等等  
  4. //  
  5. //  Created by binMac on 13-12-6.  
  6. //  Copyright (c) 2013年 bin-mac. All rights reserved.  
  7. //  
  8.   
  9. #import <Foundation/Foundation.h>  
  10.   
  11. int main(int argc, const charchar * argv[])  
  12. {  
  13.     //初始化一个数组  
  14.     NSArray *array1 = [NSArray arrayWithObject:@"bin"];  
  15.     NSLog(@"array = %@",array1);//arrayWithObject只能添加一个元素  
  16.       
  17.     NSArray *array2 = [NSArray arrayWithObjects:@"bin",@"ban", nil nil];//arrayWithObjects可以添加多个元素,且nil,不能删除  
  18.     NSLog(@"array = %@",array2);  
  19.   
  20.     //用另一个数组初始化一个数组  
  21.     NSArray *array3 = array2;  
  22.     NSLog(@"array = %@,%p,%p",array3,array3,array2);  
  23.     NSArray *array3b = [NSArray arrayWithArray:array3];  
  24.     NSLog(@"array = %@,%p,%p",array3b,array3b,array2);  
  25.       
  26.     //求数组的元素  
  27.     NSInteger arrayCount = [array3 count];  
  28.     NSLog(@"这个数组的元素有 %ld",arrayCount);  
  29.       
  30.     //通过下标取数组的元素  
  31.     NSString *str = [array3 objectAtIndex:1];  
  32.     NSLog(@"str = %@",str);  
  33.       
  34.     //追加数组元素  
  35.     NSArray *array4 = [array3 arrayByAddingObject:@"bgn"];//(一个元素)  
  36.     NSLog(@"array4 = %@",array4);  
  37.     NSArray *array5 = [array3 arrayByAddingObjectsFromArray:array1 ];//追加一个数组  
  38.     NSLog(@"array5 = %@",array5);  
  39.       
  40.       
  41.     //components  成分,  
  42.     //用指定的字符串将数组中的元素连接起来变为一个字符串  
  43.     NSString *str2 = [array5 componentsJoinedByString:@"*"];  
  44.     NSLog(@"str2 = %@",str2);  
  45.       
  46.     //判断数组中是否含有一个对象  
  47.     BOOL isContain = [array5 containsObject:@"bin"];  
  48.     NSLog(@"isContain = %d",isContain);  
  49.       
  50.     //判断一个是元素在数组中的下标  
  51.     NSInteger index = [array4 indexOfObject:@"bin" inRange:NSMakeRange(01)];//可以不用inrange,在指定范围内存在的话就返回正确的值,  
  52.     NSLog(@"index = %ld",index);  
  53.       
  54.     //可变数组--------------  
  55.     NSMutableArray *marray1 = [NSMutableArray array];//空数组  
  56.     NSLog(@"marray1 = %@",marray1);  
  57.       
  58.     NSMutableArray *marray2 = [NSMutableArray arrayWithCapacity:6];//告诉编译器大概有6个元素,方便内存优化  
  59.     NSLog(@"marray2=%@",marray2);  
  60.       
  61.     //添加元素  
  62.     NSMutableArray *marray3 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];  
  63.     NSLog(@"marray = %@",marray3);  
  64.       
  65.     [marray3 addObject:@"d"];//在后面追加一个元素  
  66.     [marray3 insertObject:@"e" atIndex:3];//在指定位置添加一个元素  
  67.      NSLog(@"marray = %@",marray3);  
  68.     [marray3 removeObject:@"e"];//删除指定对象  
  69.       
  70.     //数组的遍历  
  71.     for (int i = 0; i < [marray3 count]; i ++) {  
  72.         NSString *str = [marray3 objectAtIndex:i];  
  73.         NSLog(@"str = %@",str);  
  74.     }//上面的方法效率很低  
  75.       
  76.     for (NSString *str3 in marray3) {  
  77.         NSLog(@"str3 = %@",str3);//在这里面不能修改数组的元素,无论增删改  
  78.     }  
  79. //    for in实际上是快速枚举,跟for循环意义上还是有区别的。  
  80. //    NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,你不能通过添加或删除对象这类操作来改变数组容器。如果你这么做了,枚举器会很困惑,而你将得到未定义的结果。  
  81.       
  82.       
  83.       
  84.     //字典  
  85.     //字典是以键值对的形式存在的,并且键值是成对出现的,不会单独只有键或只有值(字典的打印使用{},表示的)  
  86.       
  87.     //初始化一个字典  
  88.     NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"a",@"k1",@"b",@"k2",@"c",@"k3", nil nil];  
  89.     NSLog(@"dic1 = %@",dic1);//必须成对初始化  
  90.       
  91.     //输出字典的数量  
  92.     NSLog(@"这个字典的数量 = %lu",[dic1 count]);//%ld  也可以输出  
  93.       
  94.     //获取全部的key和object  
  95.     NSArray *keyarray=[dic1 allKeys];  
  96.     NSArray *valuearray=[dic1 allValues];  
  97.     NSLog(@"keyarray=%@,valuearray=%@",keyarray,valuearray);  
  98.       
  99.       
  100.     //可变字典  
  101.     NSMutableDictionary *mdic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"iphone",@"k1",@"ipad",@"k2",@"pro",@"k3",@"ari",@"k4", nil nil];  
  102.     NSLog(@"mdic=%@",mdic);  
  103.       
  104.     //把一个字典添加到另外一个字典后面  
  105.     NSDictionary *dic4=[NSDictionary dictionaryWithObject:@"mini" forKey:@"k5"];  
  106.     //可变字典的追加  
  107.     [mdic addEntriesFromDictionary:dic4];  
  108.     //直接添加键值对  
  109.     [mdic setValue:@"ipod" forKey:@"k6"];  
  110.     //通过key删除指定的value  
  111.     [mdic removeObjectForKey:@"k6"];  
  112.     //删除所有  
  113. //    [mdic removeAllObjects];  
  114. //     NSLog(@"mdic=%@",mdic);  
  115.       
  116.     //批量删除一个字典内容  
  117.     NSArray *arrayk=[NSArray arrayWithObjects:@"k3",@"k4",@"k5", nil nil];  
  118.     [mdic removeObjectsForKeys:arrayk];  
  119.     NSLog(@"mdic=%@",mdic);  
  120.   
  121.     //----字典的遍历-----//从后面开始遍历  
  122.     for (id key in mdic) {  
  123.         id object = [mdic objectForKey:key];  
  124.         NSLog(@"value = %@",object);  
  125.     }  
  126.       
  127.     //NSSet集合  
  128.     //NSSet集合跟数组差不多,只不过集合中不能存放相同的对象.是一组单值对象的集合,并且被存入集 中的元素是无序的,同样也有NSMutableSet和NSSet;  
  129.     NSSet *set1 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb",@"ccc", nil nil];  
  130.     NSSet *set2 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb", nil nil];  
  131.     NSLog(@"set1 = %@",set1);//打印形式set = {()}  
  132.       
  133.     //判断一个集合时候包含某个元素  
  134.     BOOL isContain1 = [set1 containsObject:@"aaa"];  
  135.     NSLog(@"isContain1 = %d",isContain1);  
  136.       
  137.     //判断集合是否有交集  
  138.     BOOL isIntersert = [set1 intersectsSet:set2];  
  139.     NSLog(@"isIntersert = %d",isIntersert);  
  140.       
  141.     //判断集合中得元素是否一样  
  142.     BOOL isEqual = [set2 isEqualToSet:set1];  
  143.     NSLog(@"isEqual = %d",isEqual);  
  144.       
  145.     //判断set1是否为set2的子集  
  146.     BOOL isSubSet = [set2 isSubsetOfSet:set1];  
  147.     NSLog(@"isSubSet = %d",isSubSet);  
  148.       
  149.     //向一个集合中追加一个元素  
  150.     NSSet *set3 = [set1 setByAddingObject:@"ddd"];  
  151.     NSLog(@"set3 = %@",set3);  
  152.   
  153.       
  154.     NSMutableSet *set4 = [NSMutableSet setWithObjects:@"1",@"2", nil nil];  
  155.     NSMutableSet *set5 = [NSMutableSet setWithObjects:@"1",@"3", nil nil];  
  156.   
  157.     [set4 intersectSet:set5];//并集   set4 = {(1)}  
  158.     NSLog(@"set4 = %@",set4);  
  159.     [set4 unionSet:set5];  
  160.     NSLog(@"set4 = %@",set4);  
  161.       
  162.     //[set4 minusSet:set5];//set4将去除set5中相同的元素  
  163.     //NSLog(@"set4 = %@",set4);  
  164.       
  165.     return 0;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值