OC 数组总结(NSArray,NSMutableArray)

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值