注:1、数组:是一组有序的对象的集合,通过索引下标获取到数组中的各个元素。
2、数组中不可以存放基本数据类型,只能存放对象。如果需要将剧本数据类型放入数组中,需要通过NSNumber来放入。
1、创建NSArray
(1)方法一:创建空数组
NSArray *arr = [NSArrayarray];
(2)方法二:创建单个元素的数组NSArray *arr = [NSArrayarrayWithObject:@"hello"];
(3)方法三:创建多个元素的数组NSArray *arr = [NSArrayarrayWithObjects:@"hello",@"world",@"你好",@"!!!!",nil];//nil不是一个元素,此处是四个元素
(4)方法四:简化语法NSArray *arr = @[@"对象1",@"对象2",@"对象3",@"对象4"];
(5)方法五:实例化方法(不推荐使用)NSArray *arr = [[NSArrayalloc]initWithObjects:@"hello1",@"hi",nil];
NSArray *arr = @[@1,@2,@3,@4];
(6)方法六:用数组来创建数组
NSArray *arr2 = [NSArrayarrayWithArray:arr];
[arr objectAtIndex:0];
componentsJoinedByString:
[arr arrayByAddingObject:@"钱七"];
[[arr objectAtIndex:i]hasPrefix:@"王"];
(9)数组以特定的字符结尾的元素[[arr objectAtIndex:i]hasSuffix:@"三"];
(10)将字符串拆分成数组
[str componentsSeparatedByString:@","];
for(int i=0;i<[arr count];i++){
NSLog(@"第%i个元素是:%@",i+1,[arr objectAtIndex:i]);
}
//forin循环,自行循环,无需下标
for(NSNumber *numin arr){
NSLog(@"%@",num);
}
// 1、倒序输出一个字符串数组@"ab",@"de",@"ij"
NSArray *arr=@[@"ab",@"de",@"ij"];
for(int i=[arrcount]-1;i>=0;i--){
NSLog(@"%@",[arrobjectAtIndex:i]);
}
//2、统计字符串数组中指定的单词的个数@"how",@"do",@"you",@"do"统计@"do"的个数
NSArray *arr1=@[@"how",@"do",@"you",@"do"];
int count=0;
for(NSString *strin arr1){
if([str isEqualToString:@"do"]){
count++;
}
}
// for(int i=0;i<[arr1 count];i++){
// if([[arr1 objectAtIndex:i] isEqualToString:@"do"]){
// count++;
// }
//
// }
NSLog(@"do的个数是:%d",count);
//3、一个字符串包含多个学生的名字,"张三,张思,王五,王三,赵六",统计姓王的学生的个数,统计名字叫三的学生的个数
NSArray *arr2=[NSArrayarrayWithObjects:@"张三",@"张思",@"王五",@"王三",@"赵六",nil];
int count1=0,count2=0;
for(int i=0;i<[arr2count];i++){
if([[arr2 objectAtIndex:i] hasPrefix:@"王"]){
count1++;
}
if([[arr2 objectAtIndex:i] hasSuffix:@"三"]){
count2++;
}
}
NSLog(@"姓王的学生的个数是:%d,名字叫三的学生的个数是:%d",count1,count2);
NSString *str1=@"张三,张思,王五,王三,赵六";
NSArray *arr3=[str1componentsSeparatedByString:@","];
int countWang=0;
int countSan=0;
for(NSString *studentNamein arr3){
if([studentName hasPrefix:@"王"]){//判断开头
countWang++;
}
if([studentName hasSuffix:@"三"]){//判断末尾
countSan++;
}
}
NSLog(@"姓王的学生的个数是:%d,名字叫三的学生的个数是:%d",countWang,countSan);
//判断是否包含指定对象(containObject)
//在for循环前定一个bool变量,初始为no
BOOL isContains=NO;
for(NSString *stuNamein arr3){
if([stuName isEqualToString:@"张三"]){
isContains=YES;
NSLog(@"有名字叫张三的学生");
break;
}else{
NSLog(@"没有名字叫张三的学生");
}
}
// if([arr3 containObject:@"张三"]){
// NSLog(@"有名字叫张三的学生");
//
// }else{
// NSLog(@"没有名字叫张三的学生");
// }
//指定元素的位置索引
NSUInteger index=[arr3 indexOfObject:@"张三"];
NSLog(@"%i",index);
//添加一个学生
NSArray *array=[arr3 arrayByAddingObject:@"钱七"];//在末尾添加
NSLog(@"%i",[arraycount]);
NSLog(@"%d",[arr3count]);//原来的数组是不变的,只是创建了一个新的
NSString *strNew=[array componentsJoinedByString:@"#"];
NSLog(@"%@",strNew);
NSMutableArray *arr=[NSMutableArrayarray];
NSMutableArray *arr=[NSMutableArrayarrayWithObjects:@"张三",@"李四",nil];
//setArray设置数组
//面向对象编程原则:里氏替换原则,父类对象可以用子类对象替换
[arr2 setArray:arr1];
(4)添加元素[arr2 addObject:@"王五"];
(5)在指定位置插入元素//在头部插入一个insertObjexct(指定位置)
[arr2 insertObject:@"李四"atIndex:0];
(6)删除指定位置的元素//删除指定位置的元素removeObjectAtIndex(通过索引来删除)
[arr2 removeObject:@"张三"];
(7)删除多个元素//删除多个元素removeObjectsInArray(先把要删除的放在一个空的数组中,然后从原先数组中删除这个数组就可以了)
(12)模拟位置交换元素
exchangeObjectAtIndex:数字 withObject:要替换的对象
(13)查找元素在数组中的索引位置:
indexOfObject:
3、示例代码部分
// 在学生数组张三、李四、王武中添加一个学生赵六
//NSMutableArray定义
NSMutableArray *arr=[NSMutableArrayarrayWithObjects:@"张三",@"李四",@"王武",nil];
[arr addObject:@"赵六"];
for(NSString *namein arr){
NSLog(@"%@",name);
}
NSLog(@"______分割符__________");
NSMutableArray *arr1=[NSMutableArrayarrayWithObjects:@"张三",@"李四",@"赵六",nil];
[arr1 insertObject:@"王五"atIndex:2];
for(NSString *strin arr1){
NSLog(@"%@",str);
}
NSLog(@"______分割符__________");
NSMutableArray *arr2=[NSMutableArrayarrayWithObjects:@"张三",@"李四",@"王五",@"赵六",nil];
[arr2 removeObject:@"李四"];
//forin中的类型是由数组决定的,如是Goods类,就是类名加对象
for(NSString *namein arr2){
NSLog(@"%@",name);
}
NSLog(@"______分割符__________");
NSMutableArray *arr3=[NSMutableArrayarrayWithObjects:@"张三",@"李四",@"王五",@"赵六",nil];
NSUInteger index=[arr3 indexOfObject:@"李四"];
[arr3 removeObjectAtIndex:index];
for(NSString *str1in arr3){
NSLog(@"%@",str1);
}
NSLog(@"______分割符__________");
NSMutableArray *arr4=[NSMutableArrayarray];
for(NSString *name1in arr3){
if([name1 isEqualToString:@"张三"]||[name1isEqualToString:@"李四"]){
[arr4 addObject:name1];
}
}
[arr3 removeObjectsInArray:arr4];
for(NSString *str1in arr3){
NSLog(@"%@",str1);
}
//替换指定索引位置的
[arr replaceObjectAtIndex:0withObject:@"tree"];
for(NSString *strin arr){
NSLog(@"arr:%@",str);
}
输出结果: