OC可變陣列的常用操作
阿新 • • 發佈:2019-01-12
可變陣列
- 可變陣列的初始化
可變陣列,繼承於不變陣列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];//類方法
- 可變陣列新增元素
//增加一個物件
[arr1 addObject:@"jay"];
//從數組裡增加物件元素
[arr1 addObjectsFromArray:arr];
NSLog(@"arr1= %@",arr1);
//插入
//插入元素 在指定的下標位置
[arr1 insertObject:@"hello" atIndex:0];
- 可變陣列刪除元素
//刪除 指定下標的元素 [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);
- 可變陣列中元素的交換
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迴圈裡面刪除是不正確的,因為下標在一直變化的