您的位置:首页 > 其它

OC可变数组的常用操作

2019-01-10 17:56 10 查看
版权声明:俊而不逊原创文章,转载请注明出处 https://blog.csdn.net/zjpjay/article/details/86245056

可变数组

  1. 可变数组的初始化
可变数组,继承于不变数组NSArry;
不可变数组的方法都可以用于可变数组

创建一个空的可变数组
NSMutableArray *arr = [[NSMutableArray alloc]init];

//给一个初始化容量
NSMutableArray *arr1 = [[NSMutableArray alloc]initWithCapacity:10];
//类方法
NSMutableArray *arr2 = [NSMutableArray array];

NSArray *arr = @[@“zjp”,@“ww”,@“jjj”,@“ww”,@“ahk”];
NSMutableArray *arr1 = [[NSMutableArray alloc]init];
NSMutableArray *arr2 = [NSMutableArray array];//类方法

  1. 可变数组添加元素
//增加一个对象
[arr1 addObject:@"jay"];

//从数组里增加对象元素
[arr1 addObjectsFromArray:arr];
NSLog(@"arr1= %@",arr1);

//插入
//插入元素 在指定的下标位置
[arr1 insertObject:@"hello" atIndex:0];
  1. 可变数组删除元素
//删除 指定下标的元素
[arr1 removeObjectAtIndex:0];
NSLog(@"arr1= %@",arr1);

//删除最后 一个元素
[arr1 removeLastObject];
NSLog(@"arr1= %@",arr1);

//删除指定元素 如果你数组里有多个相同的元素,也会一起删除
[arr1  removeObject:@"ww"];
NSLog(@"arr1= %@",arr1);

//删除指定范围的 元素
NSRange range = {0,2};
[arr1 removeObject:@"zjp" inRange:range];
NSLog(@"arr1= %@",arr1);

//删除指定范围里的 所有元素
[arr1 removeObjectsInRange:range];
NSLog(@"arr1= %@",arr1);

//删除指定数组的所有元素
[arr1 removeObjectsInArray:@[@"zjp"]];
NSLog(@"arr1= %@",arr1);

//删除指定下标集合的元素
//下标集合类

NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc]init];
[indexSet addIndex:0];//把下标0放进集合里
[indexSet addIndex:1];//把下标2放进集合里

[arr1 removeObjectsAtIndexes:indexSet];
NSLog(@"arr1= %@",arr1);

//删除数组的所有元素
[arr1 removeAllObjects];
NSLog(@"arr1= %@",arr1);
  1. 可变数组中元素的交换
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil]

//交换元素
//交换指定下标的数组元素
NSLog(@"array= %@",array);
[array exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@"array= %@",array);

//替换指定下标的元素
[array replaceObjectAtIndex:4 withObject:@"6"];
NSLog(@"array= %@",array);

小练习

可变数组练习 冒泡排序

NSMutableArray *arrM = [NSMutableArray arrayWithObjects:@"1",@"2",@"5",@"4",@"8",@"10",@"7",@"3",@"6",@"9", nil];
NSInteger j=0;

for (NSInteger i = 0; i<[arrM count]; i++) {

for (j=0;j<=i-1 ; j++) {

if ([arrM[i] integerValue]>[arrM[j] integerValue]) {

[arrM exchangeObjectAtIndex:i withObjectAtIndex:j];

}
}
}
NSLog(@"arrM= %@",arrM);
}

1.创建一个可变数组,数组中包含若干不相同的字符串,要求将指定的字符串删除

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"4",@"s",@"6", nil];
[arr removeObject:@"s"];
NSLog(@"arr= %@",arr);

2.创建一个可变数组,数组中包含若干不相同的字符串,要求将 下标整除3 的元素全部删除

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11", nil];
NSMutableIndexSet *index = [[NSMutableIndexSet alloc]init];

for (NSInteger i=0; i<[array count]; i++) {

if (i%3==0) {
[index addIndex:i];
}
}
[array removeObjectsAtIndexes:index];

NSLog(@"arry= %@",array);

需要注意 上面的代码,如果在for循环里面删除是不正确的,因为下标在一直变化的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: