OC的不可变数组以及可变数组

OC中的数组与C语言的有一些区别,OC中没有多维数组。
OC中的数组分为不可变数组NSArray和NSMutableArray。
1.不可变数组的初始化以及创建
1)初始化:

//创建一个空的数组
NSSArray *array1 = [[NSSArray alloc] init];
NSSArray *array2 = [NSSArray array];
//创建一个含有一个元素的不可变数组
NSArray *array3 = [NSArray arrayWithObject:@"Gene"];
//创建一个含有多个元素的不可变数组,nil作为数组的结束标志,只能存在于数组结尾。
NSArray *array4 = [NSArray arrayWithObjects:@"Gene",@"Dash",@"Alan",@4nil];

通过以上的方法创建一个数组,相对来说比较复杂。那么创建数组还可以使用相对比较简便的新语法。如下:

NSArray *array5 = @[@"Gene"];
NSArray *array6 = @[@"Gene",@"Dash",@"Alan",@4nil];

2)根据数组array6,创建一个新的数组array7:

NSArray *array7 = [NSArray arrayWithArray:array6];

3)从本地文件读取数组文件

NSArray *array8 = [NSArray arrayWithContentsOfFile:@""];

4)从网页读取数组文件

NSArray *array9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];

5)求数组中的元素个数

NSUInteger count  = array6.count;

2.不可变数组NSArray的操作
1)访问数组中的元素

NSString *str1 = array6[0];

数组里面可以存放多种类型的元素,其中@3表示一个整形变量,等价于[NSNumber numberWithInt:3]。这里也说明了,在数组中的元素都为对象。
2)通过元素查找该元素对应的下标

NSUInteger index = [array6 indexOfObject:@"Gene"];

3)判断数组中是否含有某个元素

if[array6 containsOjbect:@"Gene"];

4)向不可变数组增加一个元素

NSArray *newArray = [array6 arrayByAddingObject:@"Nash"];
//通过一个已知数组创建一个新的数组
NSArray *newArray2 = [array6 arrayByAddingOjbectsFromArray:array6];

通过add的方法添加一个元素,实际上是先根据原来的数组复制一个新的数组,再在新数组的末尾添加相应的元素,重新赋值给newArray,体现出不可变的特性。
5)将数组中的字符串拼接成一个新的字符串,并在每个元素中间添加“-”

NSString *string = [newArray2 componentsJoinedByString:@"-"];

6)将字符串分隔成数组元素

NSArray *array12 = [string2 componentsSeparatedByString:@"="];
        NSLog(@"%@",array12);

2.可变数组
1)初始化一个空的数组

NSMutableArray *mArray1 = [NSMutableArray array];

2)初始化一个里面含有一个元素的数组

NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"Gene"];

3)创建一个包涵多个元素的数组,与不可变数组一样,已nil结尾

NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"Gene",@"Dash",@"Nash",@"Alan",nil]

4)根据另外一个数组创建新的数组

NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray4];

5)可变数组的独特的初始化方法

NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:100];

后面的整型参数是该数组的内存空间。
6)对可变数组的操作。

//增
        //在数组末尾添加一个元素,直接在被添加数组中的末尾添加相应的元素,与不可变字符串不同,不生成新的数组
        [mArray3 addObject:@"Gene"];

        //在数组指定位置插入一个元素 atIndex,在指定位置插入
        [mArray3 insertObject:@"car" atIndex:2];

        //替换,将index位置上的元素替换为相应的元素
        [mArray3 replaceObjectAtIndex:1 withObject:@"bmw"];
        NSLog(@"%@",mArray3);

        //交换,将数组指定位置上的两个元素交换位置
        [mArray3 exchangeObjectAtIndex:0 withObjectAtIndex:1];
        NSLog(@"%@",mArray3);



        //删除
        //删除置顶元素
        [mArray3 removeObject:@"2"];
        NSLog(@"%@",mArray3);

        //删除指定位置上的元素
        [mArray3 removeObjectAtIndex:2];
        NSLog(@"%@",mArray3);

        //删除数组最后的一个元素
        [mArray3 removeLastObject];
        NSLog(@"%@",mArray3);

        //删除数组里面的所有元素
        [mArray3 removeAllObjects];
        NSLog(@"%@",mArray3);

        //数组遍历
        NSMutableArray *newArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

        for (int i = 0; i < newArray.count; i++) {
            NSLog(@"newarray =%@",newArray);
        }
        //快速枚举
        for (NSString *element in newArray) {
            NSLog(@"%@",element);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值