OC 数组总结(NSArray,NSMutableArray)

来源:互联网 发布:linux系统开发 编辑:程序博客网 时间:2024/06/10 09:05

1 不可变数组

  1.1 创建不可变数组

// 使用字面量的方式创建(常用的方法)    NSArray *arr1 = @[@"1",@"2",@"3",@"4"];    // 使用 alloc 和 自定义初始化方式来创建    NSArray *arr2 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4", nil];    // 输出    NSLog(@"arr1 : %@",arr1);    NSLog(@"arr2 : %@",arr2);

  1.2 将数组拼接成字符串

    NSArray *arr3 = @[@"北京",@"大连",@"大庆",@"山东"];    NSString *str1 = [arr3 componentsJoinedByString:@":"];    NSLog(@"str1 : %@",str1); //输出结果    北京:大连:大庆:山东

  1.3 字符串截取为数组

    NSString *str2 = @"www.baidu.com";    NSArray *arr4 = [str2 componentsSeparatedByString:@"."];    NSLog(@"arr4 : %@",arr4);

  1.4 数组的快速遍历(快速枚举)

    // 将arr1数组中的所有的元素输出    for (NSString *temp in arr1) {        NSLog(@"arr1 : %@",temp);    }

  1.5 判读一个对象是否在数组中

  // 分别判读字符串"0"和字符串"1"是否在数组arr1中    BOOL result = [arr1 containsObject:@"0"];    NSLog(@"result1 : %d",result);    result = [arr1 containsObject:@"1"];    NSLog(@"result2 : %d",result);

  1.6 数组作为另一个数组的元素

    // 创建数组arr5,将数组arr1和数组arr2作为数组arr5的一个元素    NSArray *arr5 = [NSArray arrayWithObjects:arr1,arr2, nil];    NSLog(@"%@",arr5);    // 输出arr5的长度 结果是2    NSLog(@"%ld",arr5.count);

2 可变数组

  2.1创建可变数组

    // 使用便利构造器    NSMutableArray *arr1 = [NSMutableArray array];    // 使用alloc和init    NSMutableArray *arr2 = [[NSMutableArray alloc] init];

  2.2 添加元素

    // 向arr1中添加三个元素    [arr1 addObject:@"张三"];    [arr1 addObject:@"李四"];    [arr1 addObject:@"王五"];

  2.3 插入元素

     //在1的位置插入"田七"    [arr1 insertObject:@"田七" atIndex:1];

  2.4 移除元素

    // 移除最后一个元素    [arr1 removeLastObject];    // 移除"田七"(按元素内容移除)    [arr1 removeObject:@"田七"];

  2.5 替换

   // 将1位置上的元素替换为"田七"    [arr1 replaceObjectAtIndex:1 withObject:@"田七"];

  2.6 交换

    // 交换位置0和位置1上的元素    [arr1 exchangeObjectAtIndex:0 withObjectAtIndex:1];

  2.7 清空数组

   [arr1 removeAllObjects];

 2.8可变数组和不可变数组的转换

    // 向arr1中添加三个元素    [arr1 addObject:@"张三"];    [arr1 addObject:@"李四"];    [arr1 addObject:@"王五"];    // 将arr1中的所有元素添加到一个不可变数组中    NSArray *arr3 = [NSArray arrayWithArray:arr1];        // 将不可变数组的元素添加到可变数组arr4中    NSMutableArray *arr4 = [NSMutableArray arrayWithArray:arr3];

 3 四种遍历方式和数组排序

          常用的还是第一和第二中遍历方式

 // 新建一个数组    NSArray *arr = [NSArray arrayWithObjects:@"5",@"4",@"6", nil];

     3.1 第三种遍历方式

    // 这是通过block的方式来访问数组里的元素,obj就是对于的元素对象,它的默认类型是id,可以修改为其他的类型    [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {        NSLog(@"%@",obj);    }];

     3.2 第四种遍历方式

    <span style="font-weight: normal;">// 这是使用枚举器来完成遍历    NSEnumerator *enumer = [arr objectEnumerator];    NSString *temp;    while (temp = [enumer nextObject]) {        NSLog(@"%@",temp);    }</span>
     3.3 第一种遍历方式

    <span style="font-weight: normal;">// for循环    for(int i = 0; i < arr.count; i++){        NSLog(@"%@",arr[i]);    }</span>
     3.4 第二种便利方式

    <span style="font-weight: normal;">// for in 循环    for (NSString *temp in arr) {        NSLog(@"%@",temp);    }</span>

     3.5 数组排序

    // 对不可变数组排序,返回一个排序后的数组,原数组不发生改变    NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];    // 输出排序后的数组    NSLog(@"%@",newArr);        // 对可变数组的排序    NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:@"6",@"5",@"8", nil];        [arr2 sortedArrayUsingSelector:@selector(compare:)];    // 输出arr2数组    NSLog(@"%@",arr2);

4 小程序

// 数组中添加三个名字
// 查找指定的名字,并用另外的名字替换他
// 删除指定的名字
   
 // 新建可变数组    NSMutableArray *arr = [NSMutableArray array];    // 添加三个姓名    [arr addObject:@"张三"];    [arr addObject:@"李四"];    [arr addObject:@"王五"];        // 查找"李四"    NSString *searchName = @"李四";    NSString *replaceName = @"田七";    NSString *deleteName = @"王五";    NSInteger location = -1;    for(int i = 0; i < arr.count; i++){        if([arr[i] isEqualToString:searchName]){            location = i;            NSLog(@"找了%@,存储位置在%ld",searchName,location);        }    }    if(-1 == location){        NSLog(@"没有找到%@",searchName);    }    // 用replaceName替换searchName    else{        [arr replaceObjectAtIndex:location withObject:replaceName];        NSLog(@"替换完成!用%@替换了%@",replaceName,searchName);    }        // 删除指定的名字    [arr removeObject:deleteName];    NSLog(@"删除了%@",deleteName);        // 输出数组arr的所有元素    for (NSString *temp in arr) {        NSLog(@"%@",temp);    }






































0 0
原创粉丝点击