NSArray,NSSet,NSEnumerator,NSDictionary及对应Mutable介绍

NSArray,NSSet,NSEnumerator,NSDictionary及对应Mutable介绍



上述的这些都是 Objective-C 中的集合类,不带 Mutable 的是不可修改的集合类, 带 Mutable 的是可以修改的集合类。下面的例子中有足够的注释,非常清晰,不多说了。



1. NSArray与NSMutableArray

就是通常的数组,其中的每一个元素有各自确定的唯一序号,元素可以重复


2. NSSet与NSMutableSet

就是通常的集合,其中的元素没有确定的序号(即遍历的顺序与加入集合的顺序没有任何关系),但决不重复(若加入相同元素则会覆盖之前的)


3. NSEnumerator(没有NSMutableEnumerator )

类似于NSArray,一般不单独使用。只是作为 NSArray,NSSet 和 NSDictionary 的辅助类(它们都有相应的方法转换为NSEnumerator)。特别要注意NSEnumerator 中的元素一旦遍历过之后就不能重新遍历,必须重新创建一个NSEnumerator。


4. NSDictionary与NSMutableDictionary

就是我们常说的键值对(Key-Value),每一个元素包含一个Key和一个Value。通过Key可以查到它对应的Value。

注意和NSSet一样,NSDictionary 中元素的顺序也是不确定的。






下面是例子:



1.

创建一个View-based Application,名称是test




2.

修改 TestViewController.m 如下:

[cpp]  view plain copy
  1. //  
  2. //  TestViewController.m  
  3. //  Test  
  4. //  
  5. //  Created by HuTao on 8/19/12.  
  6. //  Copyright __MyCompanyName__ 2012. All rights reserved.  
  7. //  
  8.   
  9. #import "TestViewController.h"  
  10.   
  11. @implementation TestViewController  
  12.   
  13.   
  14.   
  15. -(void)testNSArray  
  16. {  
  17.     //创建一个 NSArray,必须以 nil 结尾  
  18.     NSArray * array = [NSArray arrayWithObjects:@"Mike", @"Ben", @"Alice", @"Jane", @"Bob", @"Peter", @"Tom", @"Sam", nil];  
  19.     //或:  
  20.     //NSArray * array = [[NSArray alloc] initWithObjects:@"Mike", @"Ben", @"Alice", @"Jane", @"Bob", @"Peter", @"Tom", @"Sam", nil];      
  21.   
  22.       
  23.     //得到 NSArray 的数量  
  24.     int count = [array count];  
  25.     NSLog(@"NSArray的数量: %d", count);  
  26.       
  27.     //判断 NSArray 中是否包含某项  
  28.     if([array containsObject:@"Bob"])  
  29.     {  
  30.         NSLog(@"含有Bob");  
  31.     }  
  32.     else  
  33.     {  
  34.         NSLog(@"不含有Bob");  
  35.     }  
  36.   
  37.     if([array containsObject:@"Linda"])  
  38.     {  
  39.         NSLog(@"含有Linda");  
  40.     }  
  41.     else  
  42.     {  
  43.         NSLog(@"不含有Linda");  
  44.     }  
  45.       
  46.     //根据值判断在 NSArray 中的第一个的序号(从0开始算),不存在则返回 NSNotFound  
  47.     NSLog(@"Bob在第%d项", [array indexOfObject:@"Bob"]);  
  48.       
  49.     if([array indexOfObject:@"Linda"] == NSNotFound)  
  50.     {  
  51.        NSLog(@"没有找到Linda");  
  52.     }  
  53.     else  
  54.     {  
  55.         NSLog(@"找到Linda");  
  56.     }  
  57.       
  58.     //获取指定序号的项(从0开始算)  
  59.     NSLog(@"第%d项是%@", 2, [array objectAtIndex:2]);  
  60.       
  61.     //遍历 NSArray  
  62.     for(NSString * a in array)  
  63.     {  
  64.         NSLog(@"遍历NSArray: %@", a);  
  65.     }  
  66. }  
  67.   
  68.   
  69. -(void)testNSMutableArray  
  70. {  
  71.     //创建一个空的 NSMutableArray 数组,无需手动释放  
  72.     NSMutableArray * array = [NSMutableArray array];  
  73.     //已有元素时,也可以按如下创建:  
  74.     //NSMutableArray * array = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil];  
  75.   
  76.       
  77.     //在最后添加项  
  78.     [array addObject:@"Mike"];  
  79.     [array addObject:@"Alice"];    
  80.     [array addObject:@"Tom"];    
  81.     [array addObject:@"Ben"];    
  82.     [array addObject:@"Peter"];    
  83.     [array addObject:@"Sam"];    
  84.       
  85.     //将另一个数组也添加进来  
  86.     NSMutableArray * array2 = [NSMutableArray array];  
  87.     [array addObject:@"Linda"];  
  88.     [array addObject:@"John"];   
  89.     [array addObjectsFromArray:array2];  
  90.   
  91.       
  92.     //在指定位置添加项(在第atIndex项之前插入)  
  93.     [array insertObject:@"Bob" atIndex:2];  
  94.       
  95.     //遍历 NSArray  
  96.     for(NSString * a in array)  
  97.     {  
  98.         NSLog(@"插入后的NSArray: %@", a);  
  99.     }  
  100.       
  101.   
  102.     //替换项  
  103.     [array replaceObjectAtIndex:4 withObject:@"David"];    
  104.       
  105.     //遍历 NSArray  
  106.     for(NSString * a in array)  
  107.     {  
  108.         NSLog(@"替换后的NSArray: %@", a);  
  109.     }  
  110.       
  111.       
  112.     //删除最后的项  
  113.     [array removeLastObject];    
  114.       
  115.     //加入重复项  
  116.     [array addObject:@"Alice"];   
  117.   
  118.     //删除指定位置的项    
  119.     [array removeObjectAtIndex:5];    
  120.       
  121.     //删除所有等于Alice的项   
  122.     [array removeObject:@"Alice"];    
  123.       
  124.     //遍历 NSArray  
  125.     for(NSString * a in array)  
  126.     {  
  127.         NSLog(@"删除后的NSArray: %@", a);  
  128.     }  
  129.       
  130.       
  131.     //删除数组中所有与数组array包含相同的元素    
  132.     NSMutableArray * array3 = [NSMutableArray array];  
  133.     [array3 addObject:@"Sam"];   
  134.     [array3 addObject:@"Mike"];  
  135.     [array3 addObject:@"John"];   
  136.     [array removeObjectsInArray:array3];    
  137.       
  138.     //遍历 NSArray  
  139.     for(NSString * a in array)  
  140.     {  
  141.         NSLog(@"删除指定数组项后的NSArray: %@", a);  
  142.     }  
  143.       
  144.       
  145.     //删除所有对象    
  146.     [array removeAllObjects];    
  147.       
  148.       
  149.     //得到 NSMutableArray 的数量  
  150.     int count = [array count];  
  151.     NSLog(@"NSMutableArray的数量: %d", count);  
  152.       
  153.       
  154.     //将 NSArray 转成 NSMutableArray  
  155.     NSArray * array4 = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", @"d", nil];  
  156.     NSMutableArray * array5 = [NSMutableArray arrayWithArray:array4];  
  157.     NSLog(@"转换后的 NSMutableArray: %@", array5);  
  158. }  
  159.   
  160.   
  161.   
  162. -(void)testNSSet  
  163. {  
  164.     //NSSet 中的元素是无序且唯一的  
  165.     NSArray * array1 = [NSArray arrayWithObjects:@"Orange", @"Apple", @"Pear", @"Banana", @"Melon", nil];  
  166.     NSArray * array2 = [NSArray arrayWithObjects:@"Melon", @"Banana", @"Orange", @"Pear", @"Apple", nil];  
  167.       
  168.     NSSet * set1 = [NSSet setWithArray:array1];  
  169.     NSSet * set2 = [NSSet setWithArray:array2];  
  170.     //也可以如下创建NSSet,但必须以 nil 结尾  
  171.     NSSet * set3 = [NSSet setWithObjects:@"Banana", @"Pear", @"Apple", nil];  
  172.       
  173.     //得到NSSet的数量  
  174.     int count = [set1 count];  
  175.     NSLog(@"NSSet的数量: %d", count);  
  176.       
  177.     NSString * s;  
  178.       
  179.     //遍历NSSet,注意顺序是无序的,遍历结束返回nil  
  180.     //虽然含有相同元素,但set1和set2的遍历顺序却是不同的(或者每次遍历的顺序都不是相同的)  
  181.     for(s in set1)  
  182.     {  
  183.         NSLog(@"遍历NSSet1: %@", s);  
  184.     }  
  185.     for(s in set2)  
  186.     {  
  187.         NSLog(@"遍历NSSet2: %@", s);  
  188.     }  
  189.       
  190.     //也可以这样遍历  
  191.     NSEnumerator * enumerator = [set1 objectEnumerator];    
  192.     for(s in enumerator)  
  193.     {    
  194.         NSLog(@"NSEnumerator遍历NSSet: %@", s);    
  195.     }    
  196.       
  197.       
  198.     //判断是否含有Banana字符串    
  199.     if([set1 containsObject:@"Banana"])  
  200.     {    
  201.         NSLog(@"NSSet包含Banana");    
  202.     }  
  203.     else  
  204.     {    
  205.         NSLog(@"NSSet不包含Banana");    
  206.     }  
  207.       
  208.     //判断 set1 是否等于set2(只要含有相同的元素且集合中的元素个数相等即这两个set相等)  
  209.     if([set1 isEqualToSet:set2])  
  210.     {    
  211.         NSLog(@"set1 等于 set2");    
  212.     }  
  213.     else  
  214.     {  
  215.         NSLog(@"set1 不等于 set2");    
  216.     }  
  217.       
  218.     //判断set3是否是set1的子集合    
  219.     if ([set3 isSubsetOfSet:set1])  
  220.     {    
  221.         NSLog(@"set3 是 set1 的子集");    
  222.     }  
  223.     else  
  224.     {    
  225.         NSLog(@"set3 不是 set1 的子集");    
  226.     }  
  227.       
  228.     //获取所有NSSet对象    
  229.     NSArray * array4 = [set1 allObjects];  
  230.     NSArray * array5 = [set2 allObjects];  
  231.       
  232.     for(s in array4)  
  233.     {  
  234.         NSLog(@"allObjects set1: %@", s);    
  235.     }  
  236.     for(s in array5)  
  237.     {  
  238.         NSLog(@"allObjects set2: %@", s);    
  239.     }  
  240. }  
  241.   
  242.   
  243. -(void)testNSMutableSet  
  244. {  
  245.     //定义 NSMutableSet  
  246.     NSMutableSet * set1 = [NSMutableSet setWithObjects:@"Orange", @"Apple", @"Pear", @"Banana", @"Melon", nil];  
  247.     NSMutableSet * set2 = [NSMutableSet setWithObjects:@"Orange", @"Apple", @"Pear", @"Banana", @"Melon", nil];  
  248.     NSMutableSet * set3 = [NSMutableSet setWithObjects:@"Orange", @"Apple", @"Pear", @"Banana", @"Melon", nil];  
  249.     //定义一个初始长度为6的NSMutableSet  
  250.     NSMutableSet * set4 = [NSMutableSet setWithCapacity:6];  
  251.     NSMutableSet * set5 = [NSMutableSet setWithObjects:@"Banana", @"Pear", @"Apple", nil];  
  252.       
  253.     NSString * s;  
  254.       
  255.     //遍历NSMutableSet  
  256.     for(s in set1)  
  257.     {  
  258.         NSLog(@"遍历NSSet1: %@", s);  
  259.     }  
  260.       
  261.     //加入元素  
  262.     [set4 addObject:@"Pear"];  
  263.     [set4 addObject:@"Banana"];  
  264.     [set4 addObject:@"Orange"];  
  265.     [set4 addObject:@"Pear"];  
  266.     [set4 addObject:@"Melon"];  
  267.       
  268.     //加入重复的元素会被忽略  
  269.     int count = [set4 count];  
  270.     NSLog(@"set4的数量: %d", count);  
  271.       
  272.     //删除set1中所有包含在set5中的元素  
  273.     [set1 minusSet:set5];  
  274.     for(s in set1)  
  275.     {  
  276.         NSLog(@"minus后遍历set1: %@", s);  
  277.     }  
  278.       
  279.     //将set2与set5的交集赋值到set2  
  280.     [set2 intersectSet:set5];  
  281.     for(s in set2)  
  282.     {  
  283.         NSLog(@"intersectSet后遍历set2: %@", s);  
  284.     }  
  285.       
  286.     //将set3与set5并集赋值到set3  
  287.     [set3 unionSet:set5];  
  288.     for(s in set3)  
  289.     {  
  290.         NSLog(@"unionSet后遍历set3: %@", s);  
  291.     }  
  292.       
  293.       
  294.     //将NSArray中的数据加入NSMutableSet  
  295.     NSMutableSet * set6 = [NSMutableSet setWithCapacity:3];  
  296.     NSArray * array = [NSArray arrayWithObjects:@"Mike", @"Ben", @"Alice", @"Jane", @"Bob", @"Peter", @"Tom", @"Sam", nil];  
  297.     [set6 addObjectsFromArray:array];  
  298.     for(s in set6)  
  299.     {  
  300.         NSLog(@"addObjectsFromArray后遍历set6: %@", s);  
  301.     }  
  302.       
  303.       
  304.     //过滤NSMutableSet  
  305.     NSMutableSet * set7 = [NSMutableSet setWithObjects:@"One", @"Two", @"Three", @"Four", nil];  
  306.     NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF beginswith 'T'"];  
  307.     [set7 filterUsingPredicate:predicate];  
  308.     //过滤后set7中只含有Two和Three  
  309.     for(s in set7)  
  310.     {  
  311.         NSLog(@"过滤后遍历set7: %@", s);  
  312.     }  
  313.       
  314.     //删除指定元素  
  315.     [set1 removeObject:@"Melon"];  
  316.     for(s in set1)  
  317.     {  
  318.         NSLog(@"删除Melon后遍历set1: %@", s);  
  319.     }  
  320.     //删除不存在的元素不会出错  
  321.     [set1 removeObject:@"grape"];  
  322.     for(s in set1)  
  323.     {  
  324.         NSLog(@"删除grape后遍历set1: %@", s);  
  325.     }  
  326.       
  327.     //删除所有元素  
  328.     [set1 removeAllObjects];  
  329.     NSLog(@"删除所有元素后set1的数量: %d", [set1 count]);  
  330. }  
  331.   
  332.   
  333.   
  334. -(void)testNSEnumerator  
  335. {  
  336.     //集合类(如:NSArray、NSSet、NSDictionary等)均可获取到NSEnumerator  
  337.     //NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。  
  338.     NSArray * array = [NSArray arrayWithObjects:@"Orange", @"Apple", @"Pear", @"Banana", @"Melon", nil];  
  339.       
  340.     //通过objectEnumberator获取集合的NSEnumerator,reverseObjectEnumerator反向获取  
  341.     NSEnumerator * enumerator1 = [array objectEnumerator];  
  342.     NSEnumerator * enumerator2 = [array reverseObjectEnumerator];  
  343.     NSEnumerator * enumerator3 = [array objectEnumerator];  
  344.       
  345.     NSString * s;    
  346.     //注意:使用nextObject遍历NSEnumerator是永久性的,即遍历后将不可重新遍历,只能重新创建新NSEnumerator  
  347.     while(s = [enumerator1 nextObject])  
  348.     {  
  349.         NSLog(@"遍历NSEnumerator1: %@", s);  
  350.     }  
  351.     while(s = [enumerator2 nextObject])  
  352.     {  
  353.         NSLog(@"遍历NSEnumerator2: %@", s);  
  354.     }  
  355.       
  356.     //注意:使用nextObject遍历NSEnumerator是永久性的,即遍历后将不可重新遍历,只能重新创建新NSEnumerator  
  357.     [enumerator3 nextObject];  
  358.     [enumerator3 nextObject];  
  359.     [enumerator3 nextObject];  
  360.       
  361.     //allObjects 返回剩余没有被nextObject遍历到的元素  
  362.     NSArray * a1 = [enumerator1 allObjects];  
  363.     NSArray * a2 = [enumerator3 allObjects];  
  364.       
  365.     //由于之前已经遍历完enumerator1,因此不会打印  
  366.     for(s in a1)  
  367.     {  
  368.         NSLog(@"NSEnumerator1 allObjects: %@", s);  
  369.     }  
  370.       
  371.     //只会打印出最后两项  
  372.     for(s in a2)  
  373.     {  
  374.         NSLog(@"NSEnumerator3 allObjects: %@", s);  
  375.     }  
  376.       
  377. }  
  378.   
  379.   
  380. -(void)testNSDictionary  
  381. {  
  382.     /* 用 NSDictionary 创建不可变Dictionary */  
  383.     NSString * s;  
  384.       
  385.     //初始化一个 NSDictionary,顺序是 value1, key1, value2, key2 ......,必须以 nil 结尾  
  386.     NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:  
  387.                             @"Tom", @"name",  
  388.                             @"20", @"age",  
  389.                             @"Male", @"sex", nil];  
  390.       
  391.       
  392.     //得到词典的数量  
  393.     int count = [dict count];  
  394.     NSLog(@"词典的数量: %d", count);  
  395.       
  396.     //将所有KEY储存在 NSEnumerator 中  
  397.     NSEnumerator * enumeratorKey = [dict keyEnumerator];  
  398.       
  399.     //遍历所有KEY值  
  400.     for(s in enumeratorKey)  
  401.     {  
  402.         NSLog(@"遍历KEY的值: %@", s);  
  403.     }  
  404.       
  405.     //将所有Value储存在 NSEnumerator 中  
  406.     NSEnumerator * enumeratorValue = [dict objectEnumerator];  
  407.       
  408.     //快速枚举遍历所有Value值  
  409.     for(s in enumeratorValue)  
  410.     {  
  411.         NSLog(@"遍历Value的值: %@", s);  
  412.     }  
  413.       
  414.     //通过KEY找到Value,没有找到返回nil  
  415.     s = [dict objectForKey:@"age"];  
  416.     if (s != nil)  
  417.     {  
  418.         NSLog(@"通过KEY找到的value是: %@", s);  
  419.     }  
  420.     else  
  421.     {  
  422.         NSLog(@"没有找到KEY对应的Value");  
  423.     }  
  424.       
  425. }  
  426.   
  427.   
  428. -(void)testNSMutableDictionary  
  429. {  
  430.     /* 用 NSMutableDictionary 创建不可变Dictionary */  
  431.     NSString * s;  
  432.   
  433.     //创建一个可变Dictionary,初始长度为10,如果后面动态添加的数据超过10,  
  434.     //则 NSMutableDictionary 长度会自动增加,所以不用担心数组越界  
  435.     NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity:10];  
  436.     //或者 NSMutableDictionary * dict = [NSMutableDictionary initWithCapacity:10]; 也可以  
  437.       
  438.     //加入 Key-Value 对  
  439.     [dict setObject:@"Tom"  forKey:@"name"];  
  440.     [dict setObject:@"20"   forKey:@"age"];  
  441.     [dict setObject:@"Male" forKey:@"sex"];  
  442.   
  443.     //通过KEY找到value  
  444.     s = [dict objectForKey:@"sex"];  
  445.     if (s != nil)  
  446.     {  
  447.         NSLog(@"修改前value: %@", s);  
  448.     }  
  449.     else  
  450.     {  
  451.         NSLog(@"没有找到KEY对应的Value");  
  452.     }  
  453.       
  454.     //如果KEY相同则会直接覆盖  
  455.     [dict setObject:@"Female" forKey:@"sex"];  
  456.       
  457.     s = [dict objectForKey:@"sex"];  
  458.     if (s != nil)  
  459.     {  
  460.         NSLog(@"修改后value: %@", s);  
  461.     }  
  462.     else  
  463.     {  
  464.         NSLog(@"没有找到KEY对应的Value");  
  465.     }  
  466.       
  467.     //也可以这样遍历  
  468.     //获取包含所有KEY的数组  
  469.     NSArray * keys = [dict allKeys];  
  470.     for(s in keys)  
  471.     {  
  472.         NSLog(@"%@ is %@", s, [dict objectForKey:s]);  
  473.     }  
  474.       
  475.   
  476.     //删除Dictionary中指定项的数据  
  477.     [dict removeObjectForKey:@"name"];  
  478.       
  479.     NSLog(@"删除前数量:%d", [dict count]);  
  480.       
  481.     //删除Dictionary中的所有数据  
  482.     [dict removeAllObjects];  
  483.       
  484.     NSLog(@"删除后数量:%d", [dict count]);     
  485. }  
  486.   
  487.   
  488.   
  489. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.  
  490. - (void)viewDidLoad  
  491. {  
  492.     [super viewDidLoad];  
  493.       
  494.     //NSArray 与 NSMutableArray  
  495.     [self testNSArray];  
  496.     [self testNSMutableArray];  
  497.       
  498.     //NSSet 与 NSMutableSet  
  499.     [self testNSSet];  
  500.     [self testNSMutableSet];  
  501.       
  502.     //NSEnumerator  
  503.     [self testNSEnumerator];  
  504.   
  505.     //NSDictionary 与 NSMutableDictionary  
  506.     [self testNSDictionary];  
  507.     [self testNSMutableDictionary];  
  508. }  
  509.   
  510.   
  511. - (void)dealloc  
  512. {  
  513.     [super dealloc];  
  514. }  
  515.   
  516.   
  517. @end  





运行程序,Console输出结果如下:







由于输出太多,无法全部截图,下面是全部输出:


[plain]  view plain copy
  1. [Session started at 2012-08-21 12:14:21 +0000.]  
  2. 2012-08-21 12:14:26.907 Test[1501:207] ******* Accessibility Status Changed: On  
  3. 2012-08-21 12:14:26.954 Test[1501:207] ********** Loading AX for: com.yourcompany.Test ************  
  4. 2012-08-21 12:14:27.013 Test[1501:207] NSArray的数量: 8  
  5. 2012-08-21 12:14:27.014 Test[1501:207] 含有Bob  
  6. 2012-08-21 12:14:27.015 Test[1501:207] 不含有Linda  
  7. 2012-08-21 12:14:27.016 Test[1501:207] Bob在第4项  
  8. 2012-08-21 12:14:27.017 Test[1501:207] 没有找到Linda  
  9. 2012-08-21 12:14:27.018 Test[1501:207] 第2项是Alice  
  10. 2012-08-21 12:14:27.019 Test[1501:207] 遍历NSArray: Mike  
  11. 2012-08-21 12:14:27.020 Test[1501:207] 遍历NSArray: Ben  
  12. 2012-08-21 12:14:27.021 Test[1501:207] 遍历NSArray: Alice  
  13. 2012-08-21 12:14:27.022 Test[1501:207] 遍历NSArray: Jane  
  14. 2012-08-21 12:14:27.024 Test[1501:207] 遍历NSArray: Bob  
  15. 2012-08-21 12:14:27.025 Test[1501:207] 遍历NSArray: Peter  
  16. 2012-08-21 12:14:27.026 Test[1501:207] 遍历NSArray: Tom  
  17. 2012-08-21 12:14:27.027 Test[1501:207] 遍历NSArray: Sam  
  18. 2012-08-21 12:14:27.029 Test[1501:207] 插入后的NSArray: Mike  
  19. 2012-08-21 12:14:27.030 Test[1501:207] 插入后的NSArray: Alice  
  20. 2012-08-21 12:14:27.031 Test[1501:207] 插入后的NSArray: Bob  
  21. 2012-08-21 12:14:27.032 Test[1501:207] 插入后的NSArray: Tom  
  22. 2012-08-21 12:14:27.033 Test[1501:207] 插入后的NSArray: Ben  
  23. 2012-08-21 12:14:27.034 Test[1501:207] 插入后的NSArray: Peter  
  24. 2012-08-21 12:14:27.036 Test[1501:207] 插入后的NSArray: Sam  
  25. 2012-08-21 12:14:27.037 Test[1501:207] 插入后的NSArray: Linda  
  26. 2012-08-21 12:14:27.038 Test[1501:207] 插入后的NSArray: John  
  27. 2012-08-21 12:14:27.039 Test[1501:207] 替换后的NSArray: Mike  
  28. 2012-08-21 12:14:27.040 Test[1501:207] 替换后的NSArray: Alice  
  29. 2012-08-21 12:14:27.041 Test[1501:207] 替换后的NSArray: Bob  
  30. 2012-08-21 12:14:27.042 Test[1501:207] 替换后的NSArray: Tom  
  31. 2012-08-21 12:14:27.043 Test[1501:207] 替换后的NSArray: David  
  32. 2012-08-21 12:14:27.044 Test[1501:207] 替换后的NSArray: Peter  
  33. 2012-08-21 12:14:27.045 Test[1501:207] 替换后的NSArray: Sam  
  34. 2012-08-21 12:14:27.047 Test[1501:207] 替换后的NSArray: Linda  
  35. 2012-08-21 12:14:27.048 Test[1501:207] 替换后的NSArray: John  
  36. 2012-08-21 12:14:27.049 Test[1501:207] 删除后的NSArray: Mike  
  37. 2012-08-21 12:14:27.051 Test[1501:207] 删除后的NSArray: Bob  
  38. 2012-08-21 12:14:27.052 Test[1501:207] 删除后的NSArray: Tom  
  39. 2012-08-21 12:14:27.053 Test[1501:207] 删除后的NSArray: David  
  40. 2012-08-21 12:14:27.054 Test[1501:207] 删除后的NSArray: Sam  
  41. 2012-08-21 12:14:27.056 Test[1501:207] 删除后的NSArray: Linda  
  42. 2012-08-21 12:14:27.057 Test[1501:207] 删除指定数组项后的NSArray: Bob  
  43. 2012-08-21 12:14:27.058 Test[1501:207] 删除指定数组项后的NSArray: Tom  
  44. 2012-08-21 12:14:27.059 Test[1501:207] 删除指定数组项后的NSArray: David  
  45. 2012-08-21 12:14:27.060 Test[1501:207] 删除指定数组项后的NSArray: Linda  
  46. 2012-08-21 12:14:27.061 Test[1501:207] NSMutableArray的数量: 0  
  47. 2012-08-21 12:14:27.062 Test[1501:207] 转换后的 NSMutableArray: (  
  48.     a,  
  49.     b,  
  50.     c,  
  51.     d  
  52. )  
  53. 2012-08-21 12:14:27.063 Test[1501:207] NSSet的数量: 5  
  54. 2012-08-21 12:14:27.066 Test[1501:207] 遍历NSSet1: Melon  
  55. 2012-08-21 12:14:27.067 Test[1501:207] 遍历NSSet1: Apple  
  56. 2012-08-21 12:14:27.068 Test[1501:207] 遍历NSSet1: Orange  
  57. 2012-08-21 12:14:27.069 Test[1501:207] 遍历NSSet1: Pear  
  58. 2012-08-21 12:14:27.070 Test[1501:207] 遍历NSSet1: Banana  
  59. 2012-08-21 12:14:27.071 Test[1501:207] 遍历NSSet2: Banana  
  60. 2012-08-21 12:14:27.072 Test[1501:207] 遍历NSSet2: Apple  
  61. 2012-08-21 12:14:27.073 Test[1501:207] 遍历NSSet2: Orange  
  62. 2012-08-21 12:14:27.074 Test[1501:207] 遍历NSSet2: Pear  
  63. 2012-08-21 12:14:27.075 Test[1501:207] 遍历NSSet2: Melon  
  64. 2012-08-21 12:14:27.077 Test[1501:207] NSEnumerator遍历NSSet: Melon  
  65. 2012-08-21 12:14:27.078 Test[1501:207] NSEnumerator遍历NSSet: Apple  
  66. 2012-08-21 12:14:27.080 Test[1501:207] NSEnumerator遍历NSSet: Orange  
  67. 2012-08-21 12:14:27.081 Test[1501:207] NSEnumerator遍历NSSet: Pear  
  68. 2012-08-21 12:14:27.082 Test[1501:207] NSEnumerator遍历NSSet: Banana  
  69. 2012-08-21 12:14:27.084 Test[1501:207] NSSet包含Banana  
  70. 2012-08-21 12:14:27.085 Test[1501:207] set1 等于 set2  
  71. 2012-08-21 12:14:27.086 Test[1501:207] set3 是 set1 的子集  
  72. 2012-08-21 12:14:27.087 Test[1501:207] allObjects set1: Melon  
  73. 2012-08-21 12:14:27.088 Test[1501:207] allObjects set1: Apple  
  74. 2012-08-21 12:14:27.089 Test[1501:207] allObjects set1: Orange  
  75. 2012-08-21 12:14:27.091 Test[1501:207] allObjects set1: Pear  
  76. 2012-08-21 12:14:27.092 Test[1501:207] allObjects set1: Banana  
  77. 2012-08-21 12:14:27.093 Test[1501:207] allObjects set2: Banana  
  78. 2012-08-21 12:14:27.094 Test[1501:207] allObjects set2: Apple  
  79. 2012-08-21 12:14:27.095 Test[1501:207] allObjects set2: Orange  
  80. 2012-08-21 12:14:27.096 Test[1501:207] allObjects set2: Pear  
  81. 2012-08-21 12:14:27.097 Test[1501:207] allObjects set2: Melon  
  82. 2012-08-21 12:14:27.098 Test[1501:207] 遍历NSSet1: Melon  
  83. 2012-08-21 12:14:27.099 Test[1501:207] 遍历NSSet1: Apple  
  84. 2012-08-21 12:14:27.100 Test[1501:207] 遍历NSSet1: Orange  
  85. 2012-08-21 12:14:27.101 Test[1501:207] 遍历NSSet1: Pear  
  86. 2012-08-21 12:14:27.102 Test[1501:207] 遍历NSSet1: Banana  
  87. 2012-08-21 12:14:27.103 Test[1501:207] set4的数量: 4  
  88. 2012-08-21 12:14:27.104 Test[1501:207] minus后遍历set1: Melon  
  89. 2012-08-21 12:14:27.105 Test[1501:207] minus后遍历set1: Orange  
  90. 2012-08-21 12:14:27.106 Test[1501:207] intersectSet后遍历set2: Apple  
  91. 2012-08-21 12:14:27.108 Test[1501:207] intersectSet后遍历set2: Pear  
  92. 2012-08-21 12:14:27.109 Test[1501:207] intersectSet后遍历set2: Banana  
  93. 2012-08-21 12:14:27.110 Test[1501:207] unionSet后遍历set3: Melon  
  94. 2012-08-21 12:14:27.111 Test[1501:207] unionSet后遍历set3: Apple  
  95. 2012-08-21 12:14:27.112 Test[1501:207] unionSet后遍历set3: Orange  
  96. 2012-08-21 12:14:27.114 Test[1501:207] unionSet后遍历set3: Pear  
  97. 2012-08-21 12:14:27.114 Test[1501:207] unionSet后遍历set3: Banana  
  98. 2012-08-21 12:14:27.115 Test[1501:207] addObjectsFromArray后遍历set6: Jane  
  99. 2012-08-21 12:14:27.117 Test[1501:207] addObjectsFromArray后遍历set6: Sam  
  100. 2012-08-21 12:14:27.117 Test[1501:207] addObjectsFromArray后遍历set6: Tom  
  101. 2012-08-21 12:14:27.118 Test[1501:207] addObjectsFromArray后遍历set6: Alice  
  102. 2012-08-21 12:14:27.120 Test[1501:207] addObjectsFromArray后遍历set6: Bob  
  103. 2012-08-21 12:14:27.121 Test[1501:207] addObjectsFromArray后遍历set6: Ben  
  104. 2012-08-21 12:14:27.122 Test[1501:207] addObjectsFromArray后遍历set6: Peter  
  105. 2012-08-21 12:14:27.123 Test[1501:207] addObjectsFromArray后遍历set6: Mike  
  106. 2012-08-21 12:14:27.133 Test[1501:207] 过滤后遍历set7: Three  
  107. 2012-08-21 12:14:27.135 Test[1501:207] 过滤后遍历set7: Two  
  108. 2012-08-21 12:14:27.135 Test[1501:207] 删除Melon后遍历set1: Orange  
  109. 2012-08-21 12:14:27.136 Test[1501:207] 删除grape后遍历set1: Orange  
  110. 2012-08-21 12:14:27.137 Test[1501:207] 删除所有元素后set1的数量: 0  
  111. 2012-08-21 12:14:27.138 Test[1501:207] 遍历NSEnumerator1: Orange  
  112. 2012-08-21 12:14:27.139 Test[1501:207] 遍历NSEnumerator1: Apple  
  113. 2012-08-21 12:14:27.140 Test[1501:207] 遍历NSEnumerator1: Pear  
  114. 2012-08-21 12:14:27.141 Test[1501:207] 遍历NSEnumerator1: Banana  
  115. 2012-08-21 12:14:27.142 Test[1501:207] 遍历NSEnumerator1: Melon  
  116. 2012-08-21 12:14:27.143 Test[1501:207] 遍历NSEnumerator2: Melon  
  117. 2012-08-21 12:14:27.144 Test[1501:207] 遍历NSEnumerator2: Banana  
  118. 2012-08-21 12:14:27.146 Test[1501:207] 遍历NSEnumerator2: Pear  
  119. 2012-08-21 12:14:27.150 Test[1501:207] 遍历NSEnumerator2: Apple  
  120. 2012-08-21 12:14:27.151 Test[1501:207] 遍历NSEnumerator2: Orange  
  121. 2012-08-21 12:14:27.153 Test[1501:207] NSEnumerator3 allObjects: Banana  
  122. 2012-08-21 12:14:27.154 Test[1501:207] NSEnumerator3 allObjects: Melon  
  123. 2012-08-21 12:14:27.155 Test[1501:207] 词典的数量: 3  
  124. 2012-08-21 12:14:27.156 Test[1501:207] 遍历KEY的值: age  
  125. 2012-08-21 12:14:27.158 Test[1501:207] 遍历KEY的值: name  
  126. 2012-08-21 12:14:27.159 Test[1501:207] 遍历KEY的值: sex  
  127. 2012-08-21 12:14:27.160 Test[1501:207] 遍历Value的值: 20  
  128. 2012-08-21 12:14:27.161 Test[1501:207] 遍历Value的值: Tom  
  129. 2012-08-21 12:14:27.161 Test[1501:207] 遍历Value的值: Male  
  130. 2012-08-21 12:14:27.163 Test[1501:207] 通过KEY找到的value是: 20  
  131. 2012-08-21 12:14:27.164 Test[1501:207] 修改前value: Male  
  132. 2012-08-21 12:14:27.164 Test[1501:207] 修改后value: Female  
  133. 2012-08-21 12:14:27.165 Test[1501:207] name is Tom  
  134. 2012-08-21 12:14:27.166 Test[1501:207] age is 20  
  135. 2012-08-21 12:14:27.168 Test[1501:207] sex is Female  
  136. 2012-08-21 12:14:27.169 Test[1501:207] 删除前数量:2  
  137. 2012-08-21 12:14:27.170 Test[1501:207] 删除后数量:0  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值