OC学习NSArray与NSMutableArray数组

来源:互联网 发布:北京哪有淘宝拍摄基地 编辑:程序博客网 时间:2024/05/22 04:40
  1. @autoreleasepool {  
  2.         //创建数组对象,NSArray不可变数组  
  3.         //c语言的数组可以存放任何类型的数据,同一个数组只能有同一种数据类型  
  4.         //oc语言的数组只能存放对象,可以存放任意对象  
  5.         // [NSNull null] == 空对象  
  6.         //NSArray *arr = [[NSArray alloc] initWithObjects:@"123",@"345",@"abc", nil];  
  7.         NSArray *arr1 = @[@"1 2 3"@"345", [NSNull null], @"789"];  
  8.         NSArray *arr3 = [[NSArray alloc] initWithArray:arr1];  
  9.         NSLog(@"arr = %@",arr3);  
  10.           
  11.         //将c数组转换为oc数组对象  
  12.         //oc不允许将nil插入到数组中,因为nil作用是数组的结束标记  
  13.         NSString *carr[10] = {@"123"@"456"@"789"};  
  14.         NSArray *arr4 = [[NSArray alloc] initWithObjects:carr count:2];  
  15.         NSLog(@"arr4 = %@",arr4);  
  16.         //获取元素个数  
  17.         NSUInteger count = [arr4 count];  
  18.         NSLog(@"count = %ld",count);  
  19.         //获取指定下标元素  
  20.         NSLog(@"%@",[arr3 objectAtIndex:1]);  
  21.         //获取第一个元素或者最后一个元素  
  22.         id arrf = [arr3 firstObject];  
  23.         id arrl = [arr3 lastObject];  
  24.         NSLog(@"%@ %@",arrf,arrl);  
  25.         //获取子集  
  26.         NSArray *arr2 = @[@"111"@"222"@"333"@"444"@"555"@"666"];  
  27.           
  28.         //取出连续范围的元素作为子集内容  
  29.         NSArray *sub1 = [arr2 subarrayWithRange:NSMakeRange(13)];  
  30.           
  31.         NSLog(@"sub1 = %@", sub1);  
  32.         //获取任意元素作为子集  
  33.         //1.列出所需要元素的下标清单  
  34.         NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];  
  35.         //1-1.将要获取元素的下标写入清单  
  36.         for (NSInteger i = 0; i < [arr2 count]; i++)  
  37.         {  
  38.             if (i % 2 != 0)  
  39.             {  
  40.                 [indexs addIndex:i];  
  41.             }  
  42.         }  
  43.           
  44.         //2.将清单交给数组  
  45.         //id obj =[arr2 objectAtIndex:0]; //获取单个元素,返回单个元素  
  46.         NSArray *sub2 = [arr2 objectsAtIndexes:indexs];//获取下标清单里的所有元素,返回一个元素集合(数组)  
  47.           
  48.         NSLog(@"sub2 = %@", sub2);  
  49.           
  50.         //获取最长字符串和最小字符串  
  51.         //快速枚举  
  52.         NSArray *arr5 = @[@"123456789"@"222"@"333"@"errr"@"444"@"5"@"666"];  
  53.         NSInteger maxLength = [arr5[0] length];  
  54.         NSInteger minLength = [arr5[0] length];  
  55.         NSString *maxString = nil;  
  56.         NSString *minString = nil;  
  57.           
  58.         for (id obj in arr5) {  
  59.               
  60.             if (maxLength <= [obj length]) {  
  61.                   
  62.                 maxLength = [obj length];  
  63.                 maxString = obj;  
  64.             }  
  65.               
  66.             if (minLength >= [obj length]) {  
  67.                   
  68.                 minLength = [obj length];  
  69.                 minString = obj;  
  70.             }  
  71.         }  
  72.         NSLog(@"maxString = %@, minString = %@",maxString,minString);  
  73. #if 0  
  74.         //创建可变数组对象  
  75.         NSMutableArray *arr1 = [[NSMutableArray alloc] initWithCapacity:30];  
  76.         NSMutableArray *arr2 = [NSMutableArray arrayWithCapacity:30];  
  77.           
  78.         //添加元素  
  79.         [arr1 addObject:@"123"];  
  80.         [arr1 addObject:@"456"];  
  81.           
  82.         [arr2 addObjectsFromArray:arr1];  
  83.         [arr2 addObject:@"789"];  
  84.         [arr2 addObject:@"789"];  
  85.         [arr2 addObject:@"789"];  
  86.           
  87.         NSLog(@"arr1 = %@",arr1);  
  88.         NSLog(@"arr2 = %@",arr2);  
  89.           
  90.         //插入元素  
  91.         //插入下标的范围: 0<=index<=count  
  92.         [arr1 insertObject:@"aaa" atIndex:1];  
  93.         [arr1 insertObject:@"bbb" atIndex:[arr1 count]];  
  94.         NSLog(@"arr1 = %@",arr1);  
  95.           
  96.         //删除  
  97.         [arr2 removeAllObjects];//删除所有元素  
  98.         [arr2 removeLastObject];//删除最后一个元素  
  99.         [arr2 removeObject:@"789"];//删除指定对象,会将所有对象删除  
  100.         [arr2 removeObject:@"789" inRange:NSMakeRange(12)];//删除指定范围中的指定对象  
  101.         [arr2 removeObjectAtIndex:0];//删除指定下标的元素  
  102.         [arr2 removeObjectsInRange:NSMakeRange(22)];//删除指定范围中得元素  
  103.         [arr2 removeObjectIdenticalTo:@"789"];  
  104.         [arr2 removeObjectIdenticalTo:@"789" inRange:NSMakeRange(21)];  
  105.         //如果要删除不连续的元素,则先把要删除的元素放在一个清单中,然后再删除该清单  
  106.         //比如要删下标为偶数的  
  107.           
  108.         NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];  
  109.           
  110.         for (int i = 0; i < [arr2 count]; i++) {  
  111.               
  112.             if (i % 2 == 0) {  
  113.                   
  114.                 [indexs addIndex:i];  
  115.             }  
  116.               
  117.         }  
  118.         //删除清单中得元素  
  119.         [arr2 removeObjectsAtIndexes:indexs];  
  120.           
  121.           
  122.         //修改数组中得内容  
  123.         [arr2 replaceObjectAtIndex:2 withObject:@"aaa"];  
  124.         NSArray *arr = @[@"qqqq",@"www",@"ee"];  
  125.         [arr2 replaceObjectsAtIndexes:indexs withObjects:arr];  
  126.         // qq, 789, ww, 456, ee  
  127.          [arr2 replaceObjectsInRange:NSMakeRange(13) withObjectsFromArray:arr];// qq, qq, ww, ee, ee,在指定范围内,修改数组中得内容。  
  128.           
  129.         //交换数组中得内容  
  130.         [arr2 exchangeObjectAtIndex:1 withObjectAtIndex:3];  
  131.         //用oc对c语言中得数组进行排序  
  132.         for (int i = 0; i < [arr2 count]; ++i) {  
  133.               
  134.             for (int j = i + 1; j < [arr2 count]; ++j) {  
  135.                   
  136.                 if ([arr2[i] length] > [arr2[j] length]) {  
  137.                       
  138.                     [arr2 exchangeObjectAtIndex:i withObjectAtIndex:j];  
  139.                 }  
  140.             }  
  141.         }  
  142.         NSLog(@"arr2 = %@",arr2);  
  143. #endif  
1 0
原创粉丝点击