打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Object-c实现各种排序算法 (汇总) - Jere-Jobs - 博客园
LeetCode 769.最多能完成排序的块(中等)
[数组]1. 两数之和
冒泡排序、插入排序、选择排序、希尔排序
【数据结构和算法】数组大小减半-贪心算法解决
稀疏数组
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服