数组

 

//数组

//NSArray(不可变数组)

//数组:对象地址的有序集合

//

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        NSNumber *num1 = [NSNumber numberWithInt:12];

        //数组对象创建

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

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

        

        NSArray *array2 = [[NSArray alloc] initWithObjects:@"two",@"one",@"three",@"four", nil];

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

        //用传入的数组对象构造一个新的数组对象

        NSArray *array3 = [[NSArray alloc] initWithArray:array2];

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

        

        NSLog(@"array2 = %p array3 = %p", array2,array3);

        

        NSArray *array4 = [[NSArray alloc] initWithArray:array1 copyItems:NO];

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

        NSLog(@"array1 = %p, array4 = %p", array1, array4);

        

        //类方法创建数组对象

        NSArray *array5 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];

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

        

        //利用C语言数组创建数组对象

        NSString *carray[4]={@"one",@"two",@"three",@"four"};

        NSArray *array6 = [NSArray arrayWithObjects:carray count:4];

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

        

        NSArray *array7 = [NSArray arrayWithObject:@"five"];

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

        //利用传入的数组对象创建一个新的数组对象

        NSArray *array8 = [NSArray arrayWithArray:array6];

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

        

//        + (NSArray *)arrayWithContentsOfFile:(NSString *)path;

//        - (NSArray *)initWithContentsOfFile:(NSString *)path;

        //要求文件根结构必须为数组

        NSArray *fileArray = [NSArray arrayWithContentsOfFile:@"/Users/zhangxueming/Desktop/city.plist"];

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

        //        + (NSArray *)arrayWithContentsOfURL:(NSURL *)url;

//        - (NSArray *)initWithContentsOfURL:(NSURL *)url;

        NSURL *url  = [NSURL URLWithString:@"http://www.baidu.com"];

    }

    return 0;

}

 

#import <Foundation/Foundation.h>

 

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        NSArray *array = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five", nil];

        //统计数组元素个数

        NSUInteger cnt = [array count];

        NSLog(@"cnt = %lu", cnt);

        //获取指定位置的对象

        id obj = [array objectAtIndex:3];

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

        

        //添加数组元素

        array = [array arrayByAddingObject:@"six"];

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

        array = [array arrayByAddingObjectsFromArray:@[@"seven",@"eight",@"nine"]];

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

        

        //用给定的字符串对象拼接数组元素

        NSString *str = [array componentsJoinedByString:@" "];

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

        

        //判断数组中是否包含某个对象

        BOOL ret = [array containsObject:@"ten"];

        NSLog(@"ret = %d", ret);

        

        //返回两个数组中第一个相同的对象

        id obj1 = [array firstObjectCommonWithArray:@[@"ten",@"six",@"seven"]];

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

        

        //返回对象在数组中第一次出现的位置

        NSUInteger index = [array indexOfObject:@"five"];

        NSLog(@"index = %lu", index);

        

        //找不到返回NSNotFound

        NSUInteger index1 = [array indexOfObject:@"five" inRange:NSMakeRange(3, 3)];

        NSLog(@"index1 = %lu", index1);

        

        //判断两个数组是否相等

        BOOL ret1 = [array isEqualToArray:@[@"one",@"two",@"three"]];

        NSLog(@"ret1 = %d", ret1);

        //获取数组中第一个对象

        id obj2 = [array firstObject];

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

        //获取数组中最后一个对象

        id obj3 = [array lastObject];

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

        

        //数组提取

        NSArray *subArray = [array subarrayWithRange:NSMakeRange(3, 4)];

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

        

        NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(3, 4)];

        //NSLog(@"indexSet = %@", indexSet);

        NSArray *subArray1 = [array objectsAtIndexes:indexSet];

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

        

        NSMutableIndexSet  *mulIndex =[NSMutableIndexSet indexSet];//创建一个空的集合对象

        [mulIndex addIndex:1];

        [mulIndex addIndex:3];

        [mulIndex addIndex:7];

        [mulIndex addIndex:5];

        NSArray *subArray2 = [array objectsAtIndexes:mulIndex];

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

        

        

    }

    return 0;

}

 

//NSMutableArray

//创建可变数组对象

//继承与NSArray

 

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        NSMutableArray *mulArray = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];

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

        //增加数组元素

        [mulArray addObject:@"five"];

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

        //在指定位置插入元素

        [mulArray insertObject:@"six" atIndex:2];

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

        //删除最后一个元素

        [mulArray removeLastObject];

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

        //删除指定位置的元素

        [mulArray removeObjectAtIndex:2];

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

        //替换指定位置的元素

        [mulArray replaceObjectAtIndex:2 withObject:@"ten"];

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

        //创建指定容量大小的可变数组对象

        NSMutableArray *mulArray1 = [NSMutableArray arrayWithCapacity:20];

        [mulArray1 addObject:@"qianfeng"];

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

        //添加数组元素

        [mulArray1 addObjectsFromArray:mulArray];

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

        //交换数组中的两个元素

        [mulArray1 exchangeObjectAtIndex:3 withObjectAtIndex:4];

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

        //删除数组中的所有元素

        [mulArray1 removeAllObjects];

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

        //在指定范围内删除指定的数组元素

        [mulArray removeObject:@"ten" inRange:NSMakeRange(1, 2)];

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

 

        [mulArray addObject:@"one"];

        [mulArray addObject:@"two"];

        [mulArray addObject:@"two"];

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

        //删除数组中指定的元素

        [mulArray removeObject:@"two"];

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

        [mulArray addObject:@"three"];

        [mulArray addObject:@"five"];

        [mulArray addObject:@"six"];

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

        //删除数组中所有在otherArray中出现的元素

        [mulArray removeObjectsInArray:@[@"one",@"three",@"four"]];

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

        //删除指定范围内的元素

        [mulArray addObject:@"three"];

        [mulArray addObject:@"five"];

        [mulArray addObject:@"six"];

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

        [mulArray removeObjectsInRange:NSMakeRange(2, 2)];

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

        //用传入指定范围内的数组元素替换目标范围内的指定数组元素

        //- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;

        NSMutableArray *mulArr1 = [NSMutableArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five",nil];

        NSMutableArray *mulArr2 = [NSMutableArray arrayWithObjects:@"qian",@"feng",@"hello",@"world", nil];

        [mulArr1 replaceObjectsInRange:NSMakeRange(1, 3) withObjectsFromArray:mulArr2 range:NSMakeRange(2, 2)];

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

        //修改(重置)数组元素

        [mulArr1 setArray:@[@"qian",@"feng",@"jiao",@"xue"]];

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

        

        //在数组中集合位置添加数组元素

        NSMutableIndexSet *mulIndex3 = [NSMutableIndexSet indexSet];

        [mulIndex3 addIndex:0];

        [mulIndex3 addIndex:2];

        [mulIndex3 addIndex:4];

        [mulArr1 insertObjects:@[@"one",@"two",@"three"] atIndexes:mulIndex3];//传入的数组元素个数 要与位置集合元素个数对象

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

        //删除位置集合内的所有元素

        //注意要删除的元素在数组范围内

        [mulArr1 removeObjectsAtIndexes:mulIndex3];

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

        //- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;

        //用给定的数组替换指定位置集合的元素

        NSMutableIndexSet *mulIndex4 = [NSMutableIndexSet indexSet];

        [mulIndex4 addIndex:1];

        [mulIndex4 addIndex:3];

        [mulArr1 replaceObjectsAtIndexes:mulIndex4 withObjects:@[@"one",@"two"]];

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

        

    }

    return 0;

}