来自 关于计算机 2019-11-28 05:55 的文章
当前位置: 六合联盟网 > 关于计算机 > 正文

OC数组相关的基础操作

objective-c系列-NSMutableArray,objective-c

NSArray * arr1 = @[@"1 2 3",@"345",[NSNull null],@"789"];

********************************************

NSArray * arr3 = [[NSArray alloc]initWithArray:arr1];

// 可变数组构造方法

NSLog(@"arr3 == %@",arr3);

    //  下边两句的定义都是不可变的

//将c数组转换为oc数组对象

//    NSMutableArray *marray1 = [[ NSArray alloc]init];

//oc不允许将nil插入到数组中,因为nil作用是数组的结束标记

//    NSMutableArray * marray1 = @[@"xx",@"yy"];

NSString * carr[10] = {@"123",@"456",@"789"};

    

NSArray * arr4 = [[NSArray alloc]initWithObjects:carr count:2];

    //默认数组没有元素

NSLog(@"arr4 == %@",arr4);

    NSMutableArray * marray1 = [[ NSMutableArray alloc]init];

//获取元素个数

    NSMutableArray * marray = [NSMutableArray array];

NSUInteger count = [arr4 count];

    NSMutableArray * marray2 = [[ NSMutableArray alloc]initWithArray:@[@"1",@"2"]];

NSLog(@"count = %ld",count);

    NSMutableArray * marray3 = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three", nil];

//获取指定下标元素

    

NSLog(@"arr3.1 == %@",[arr3 objectAtIndex:1]);

    id objs[5] ={@"123",@"456",@"789",@"abc",@"def"};

//获取第一个元素或者最后一个元素

    // objs 的类型为: id [5];

id arrf = [arr3 firstObject];

    // 因为objs是数组名,即首元素的地址,又因为首元素的类型为id;

id arrl = [arr3 lastObject];

    //     所以:  objs的类型为: id *

NSLog(@"%@ %@",arrf,arrl);

    

//获取子集

    NSMutableArray * marray4 = [[NSMutableArray alloc]initWithObjects: objs count:3];

NSArray *arr2 = @[@"111", @"222", @"333", @"444", @"555", @"666"];

    NSLog(@"marray4: %@", marray4);

//取出连续范围的元素作为子集内容

    

NSArray *sub1 = [arr2 subarrayWithRange:NSMakeRange(1, 3)];

    //  开辟80个字节的动态内存,给memory,

NSLog(@"sub1 = %@", sub1);

    //       即memory指向了80个字节的合法内存

//获取任意元素作为子集

    id * memory = (__bridge id *)malloc(80);

//1.列出所需要元素的下标清单

    memory[0]=@"mem1";

NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];

    memory[1]=@"mem2";

//1-1.将要获取元素的下标写入清单

    memory[2]=@"mem3";

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

    memory[3]=@"mem4";

{

    memory[4]=@"mem5";

if (i % 2 != 1)

    NSMutableArray * marray5 = [[ NSMutableArray alloc]initWithObjects:memory count:3];

{

    NSLog(@"marray5: %@", marray5);

[indexs addIndex:i];

 

}

    //构造一个可变数组,初始给它10个元素空间, 但没有元素

}

    NSMutableArray * marray6 = [[ NSMutableArray alloc]initWithCapacity:10];

//2.将清单交给数组

    //注意: marray6还是一个空数组,即没有元素存在

//id obj =[arr2 objectAtIndex:0]; //获取单个元素,返回单个元素

    NSLog(@"marray6:%@", marray6);

NSArray *sub2 = [arr2 objectsAtIndexes:indexs];//获取下标清单里的所有元素,返回一个元素集合(数组)

********************************************

NSLog(@"sub2 = %@", sub2);

//给数组添加元素

//获取最长字符串和最小字符串

    //  add   insert

//快速枚举

    NSMutableArray * array = [[ NSMutableArray alloc]init];

NSArray *arr5 = @[@"123456789", @"22222", @"333", @"errr", @"444", @"5", @"666"];

    //尾部追加一个元素

NSInteger maxLength = [arr5[0] length];

    [array addObject:@"theFirstObject"];

NSInteger minLength = [arr5[0] length];

    NSLog(@"第一次调 addObject: array: %@",array);

NSString *maxString = nil;

    

NSString *minString = nil;

    [array addObject:@"theSecondObject"];

for (id obj in arr5) {

    NSLog(@"第二次调 addObject: array: %@", array);

if (maxLength <= [obj length]) {

 

maxLength = [obj length];

    //尾部拼接一个数组

maxString = obj;

    [array addObjectsFromArray:@[@"add1",@"add2"]];

}

    NSLog(@"第一次调 addObjectsFromArray: array: %@", array);

if (minLength >= [obj length]) {

    

minLength = [obj length];

    //结果说明 addObject是往数组的尾部追加元素

minString = obj;

    [array insertObject:@"theInsertObject" atIndex:1];

}

    NSLog(@"第一次调 insertObject: array: %@", array);

}

********************************************

NSLog(@"maxString = %@, minString = %@",maxString,minString);

//删除数组中的元素

//创建可变数组对象

    NSMutableArray * array  = [[ NSMutableArray alloc]initWithArray:@[@"1",@"2",@"3",@"4",@"5",@"6",@"1",@"1" ]];

NSMutableArray *muarr1 = [[NSMutableArray alloc] initWithCapacity:30];

    NSLog(@"array: %@", array);

NSMutableArray *muarr2 = [NSMutableArray arrayWithCapacity:30];

    // remove

//添加元素

    //删除这个对象在数组中的所有出现的地方

[muarr1 addObject:@"123"];

    [array removeObject:@"1"];

[muarr1 addObject:@"456"];

    NSLog(@"第一次调 removeObject: array: %@",array);

[muarr2 addObjectsFromArray:muarr1];

 

[muarr2 addObject:@"789"];

    //删除最后一个元素

[muarr2 addObject:@"45"];

    [array removeLastObject];

[muarr2 addObject:@"789"];

    //删除指下定标的元素

[muarr2 addObject:@"789"];

    [array removeObjectAtIndex:0];

NSLog(@"muarr1 = %@",muarr1);

    //删除所有的元素

NSLog(@"muarr2 = %@",muarr2);

    [array removeAllObjects];

//插入元素

********************************************

//插入下标的范围: 0<=index<=count

//重置数组,替换数组的某个下标的元素

[muarr1 insertObject:@"aaa" atIndex:1];

    NSMutableArray * array = [[ NSMutableArray alloc]initWithArray:@[@"abc",@"def",@"ghi"]];

[muarr1 insertObject:@"bbb" atIndex:[muarr1 count]];

    

NSLog(@"muarr1 = %@",muarr1);

    NSLog(@"原始数组: array: %@",array);

NSLog(@"删除前的muarr2 == %@",muarr2);

    NSArray * newArray = @[@"123",@"456",@"789"];

//[muarr2 removeAllObjects];//删除所有元素

    [array replaceObjectsInRange:NSMakeRange(0, [array count]) withObjectsFromArray:newArray];

//[muarr2 removeLastObject];//删除最后一个元素

    NSLog(@"全部元素被替换后的数组: array: %@",array);

//[muarr2 removeObject:@"789"];//删除指定对象,会将所有对象删除

    

//[muarr2 removeObject:@"789" inRange:NSMakeRange(1, 2)];//删除指定范围中的指定对象

    [array replaceObjectAtIndex:1 withObject:@"[theFisrtReplaceObject]"];

//[muarr2 removeObjectAtIndex:0];//删除指定下标的元素

    NSLog(@"替换某一个下标的元素:array: %@",array);

//[muarr2 removeObjectsInRange:NSMakeRange(2, 2)];//删除指定范围中得元素

    NSLog(@"新替换后的元素为: %@", [array objectAtIndex:1]);

//[muarr2 removeObjectIdenticalTo:@"789"];

********************************************

//[muarr2 removeObjectIdenticalTo:@"789" inRange:NSMakeRange(2, 1)];

//数组对象的其它常用方法

//如果要删除不连续的元素,则先把要删除的元素放在一个清单中,然后再删除该清单

    NSArray * array = @[@"one",@"two",@"three"];

//比如要删下标为偶数的

    //获取数组的首元素

NSMutableIndexSet *indexs2 = [NSMutableIndexSet indexSet];

    id obj1 = [array firstObject];

for (int i = 0; i < [muarr2 count]; i++) {

    NSLog(@"obj1: %@", obj1);

if (i % 2 == 0) {

    //获取数组的尾元素

[indexs2 addIndex:i];

    id obj2 = [array lastObject];

}

    NSLog(@"obj2: %@", obj2);

}

********************************************

//删除清单中得元素

********************************************

******************************************** // 可变数组构造方法 // 下边两句的定义都是不可变的 // NSMutableArray...

// [muarr2 removeObjectsAtIndexes:indexs2];

//替换指定下标的值

//[muarr2 replaceObjectAtIndex:2 withObject:@"aaa"];

//NSArray *arr = @[@"qqqq",@"www",@"ee"];//注意数组越界

//[muarr2 replaceObjectsAtIndexes:indexs2 withObjects:arr];

//[muarr2 replaceObjectsInRange:NSMakeRange(1, 3) withObjectsFromArray:arr];// qq, qq, ww, ee, ee,在指定范围内,修改数组中得内容。

//交换数组中得内容

// [muarr2 exchangeObjectAtIndex:1 withObjectAtIndex:3];

//用oc对c语言中得数组进行排序

for (int i = 0; i < [muarr2 count]; ++i) {

for (int j = i + 1; j < [muarr2 count]; ++j) {

if ([muarr2[i] length] < [muarr2[j] length]) {

[muarr2 exchangeObjectAtIndex:i withObjectAtIndex:j];

}

}

}

NSLog(@"删除后的muarr2 == %@",muarr2);

排序

    NSArray * arr1 = @[@"1",@"3",@"2",@"9",@"5",@"4"];

    NSMutableArray * arr = [[NSMutableArray alloc]initWithArray:arr1];

   for (int i = 0; i<[arr count]; ++i) {

        for (int j = i + 1; j<[arr count]; ++j) {

            if ([arr[i] floatValue] > [arr[j] floatValue]) {

                [arr exchangeObjectAtIndex:i withObjectAtIndex:j];

            }

        }

    }

 //  NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];

//    NSInteger num = [arr count]/2;

//    [indexs addIndex:num];

//    NSArray * sub = [arr objectsAtIndexes:indexs];

//    NSLog(@"%@",sub[0]);

本文由六合联盟网发布于关于计算机,转载请注明出处:OC数组相关的基础操作

关键词: