一、数组的概述
数组是有序的对象集合。可以通过索引下标获取到数组中的各个元素。数组中不可以存放基本数据类型、结构体,只能存放类的实例对象,如果需要把基本数据类型等放入数组中,就要对其进行封装 NSNumber、NSValue这两个方法封装。
1、数组的初始化
//数组的初始化
NSArray *array1 = [NSArrayarrayWithObject:@"One"];
NSLog(@"array1=%@",array1);
//注意多个数组对象最后一个以nil结束,当nil在中间时,后面再写也是多余的。
NSArray *array2 = [NSArrayarrayWithObjects:@"One",@"Two",@"Three",nil];
NSLog(@"array2=%@",array2);
NSArray *array3 = [NSArrayarrayWithArray:array2];
NSLog(@"array3=%@",array3);
NSArray *array4 = [[NSArrayalloc]initWithArray:array2];
NSLog(@"array4=%@",array4);
2、数组的常用方法
//创建一个数组对象
NSArray *array0 = [NSArrayarrayWithObjects:@"One",@"Two",@"Three",nil];
//获取数组中的元素个数
NSInteger count = [array0count];
NSLog(@"count=%zi",count);
//访问数组注意下标不能越界
NSString *string1 = [array0objectAtIndex:0];
NSLog(@"string1=%@",string1);
//追加数组中得内容
NSArray *array5 = [array0arrayByAddingObject:@"Four"];
NSLog(@"array5=%@",array5);
//判断数组中是否存在一个指定对象
BOOL isContain = [array5containsObject:@"Four"];
NSLog(@"isContain=%d",isContain);//如果存在isContain=1,否则反之。
//返回指定对象的索引下标
NSInteger index = [array5indexOfObject:@"Four"];
NSLog(@"index=%zd",index);
//返回数组中的最后一个元素
NSString *lastObject = [array5lastObject];
NSLog(@"lastObject=%@",lastObject);
二、可变数组NSMutableArray
1、创建可变数组及常用方法
//创建一个可变的数组
NSMutableArray *mutableArray1 = [NSMutableArrayarrayWithObjects:@"One",@"two",@"Three",@"Four",nil];
NSLog(@"mutableArray1=%@",mutableArray1);
//向数组中添加一个元素
[mutableArray1addObject:@"Five"];
NSLog(@"mutableArray1=%@",mutableArray1);
//向数组中指定下标插入元素
[mutableArray1insertObject:@"six"atIndex:5];
NSLog(@"mutableArray1=%@",mutableArray1);
//删除最后一个元素
[mutableArray1removeLastObject];
NSLog(@"mutableArray1=%@",mutableArray1);
//移除指定元素
[mutableArray1removeObject:@"Five"];
NSLog(@"mutableArray1=%@",mutableArray1);
//移除指定元素下标的元素
[mutableArray1removeObjectAtIndex:0];
NSLog(@"mutableArray1=%@",mutableArray1);
//替换指定的下标元素
[mutableArray1 replaceObjectAtIndex:0withObject:@"ten"];
NSLog(@"mutableArray1=%@",mutableArray1);
//移除所有对象
// [mutableArray1 removeAllObjects];
// NSLog(@"mutableArray1=%@",mutableArray1);
2、数组练习
/*
1、定义一个可变数组mArr
2、定义三个字符串变量
3、将字符串依次add到可变数组中,并打印数组内容
4、remove其中给一个字符串,再次打印数组内容
*/
NSMutableArray *mArr = [[NSMutableArrayalloc]init];
NSString *str_1 =@"DiRenjie";
NSString *str_2 =@"Sherlock Holmes";
NSString *str_3 =@"Conan";
//将str_1添加到可变数组mArr
[mArraddObject:str_1];
NSLog(@"mArr=%@",mArr);
//将str_2添加到可变数组mArr
[mArraddObject:str_2];
NSLog(@"mArr=%@",mArr);
//将str_3添加到可变数组mArr
[mArraddObject:str_3];
NSLog(@"mArr=%@",mArr);
//将str_3从可变数组里移除
//上面一个根据下标删除
//下面一个根据对象删除
[mArr removeObjectAtIndex:2];
// [mArr removeObject:str_3];
NSLog(@"mArr=%@",mArr);
----------------------------------------
/*
1、定义三个NSString变量用于存储三个字符串
2、定义一个NSArray变量,并伴随以上创建的三个字符初始化
3、对上述生成的NSArray进行forin快速枚举并输出
*/
NSString *str1 =@"元芳";
NSString *str2 =@"华生";
NSString *str3 =@"平次";
NSArray *arr1 = [[NSArrayalloc]initWithObjects:str1,str2,str3,nil];
for (NSString *objin arr1) {
NSLog(@"obj=%@",obj);
}
NSLog(@"++++++");
for (int index=0; index<[arr1count]; index++) {
NSString *obj1 = [arr1objectAtIndex:index];
NSLog(@"obj1=%@",obj1); }
//取随机数并排序
/*
1、定义一个可变数组mArr
2、在循环体内利用arc4rangom%100+1创建一个1-100内的随机数,用number封装后存入mArr
3、定义一个NSSortDescriptor排序描述对象,设置排序方式为升序
4、mArr通过排序描述对象进行排序后输出
*/
NSMutableArray *mArr = [[NSMutableArrayalloc] init];
while ([mArr count]<10) {
[mArr addObject:[NSNumbernumberWithInt:arc4random()%100+1]];
}
// NSLog(@"%@",mArr);
NSSortDescriptor *sd1 = [NSSortDescriptorsortDescriptorWithKey:nilascending:YES];
//利用描述对象进行排序后输出
NSArray *arr = [mArrsortedArrayUsingDescriptors:[NSArrayarrayWithObjects:sd1, nil]];
[mArrrelease];
for (NSNumber *numin arr) {
NSLog(@"%d",[numintValue]);
}