OC-数组类

NSArray

创建一个不可变数组对象

NSMutableArray

创建可变数组对象

数组中的元素都是对象可以是任意类型的对象

/*数组中存放的对象的引用*/

/* 数组的初始化方法 NSArray 创建的数组不能被修改*/

 

1.OC中的数组初始化

包括类方法初始化和对象方法初始化两种方式:

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

 2     @autoreleasepool {

 3         //直接创建一个常量数组

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

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

 6         

 7         /*

 8          OC中的数组类似于C语言中的指针数组,但是指针数组只能同一类型的,而OC中的数组可以是任意类型的

 9          */

10         //用不同对象来初始化数组

11         NSArray *array2 = [[NSArray alloc]initWithObjects:@"hello world", [NSNumber numberWithInt:123],[NSDate date],[NSNumber numberWithFloat:3.14],nil];

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

13         

14         //用其他已经存在的数组来创建数组

15         NSArray *array3 = [[NSArray alloc]initWithArray:array1];

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

17         

18         //copyItems:拷贝一份

19         //copyItems:直接return

20         NSArray *array4 = [[NSArray alloc]initWithArray:array2 copyItems:YES];

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

22         

23         //类方法

24         //创建一个空的数组对象

25         NSArray *array5 = [NSArray array];

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

27         

28         //多个对象创建一个数组

29         NSArray *array6 = [NSArray arrayWithObjects:@"one",@"two",[NSNumber numberWithFloat:3.14],nil];

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

31         

32         //用已经存在的数组创建数组

33         NSArray *array7 = [NSArray arrayWithArray:array6];

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

35     }

36     return 0;

37 }
View Code

 

2.OC数组的操作函数

  1 int main(int args,const char *argv[])

  2 {

  3     @autoreleasepool {

  4         NSArray *array1 = [[NSArray alloc]initWithObjects:@"123",@"abc",@"oop", nil];

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

  6         

  7         //计算数组的长度

  8         NSInteger count = [array1 count];

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

 10         

 11         //获取指定位置的对象

 12         id obj = [array1 objectAtIndex:2];

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

 14         

 15         //在数组中添加一个对象:其实是在底层中生成一个新的数组对象

 16         NSArray *array2 = [array1 arrayByAddingObject:@"alibb"];

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

 18         

 19         //将传入的数组添加到一个数组的末尾

 20         NSArray *otherArray = [[NSArray alloc]initWithObjects:@"add",@"sub",@"mul",@"div", nil];

 21         NSArray *array3 = [array1 arrayByAddingObjectsFromArray:otherArray];

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

 23         

 24         //用指定字符串连接数组元素

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

 26         NSString *str = [array1 componentsJoinedByString:@"##"];

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

 28         

 29         //判断是否包含对象

 30         BOOL flag = [array1 containsObject:@"oop"];

 31         NSLog(@"flag = %i",flag);

 32         

 33         //返回两个数组中第一个公共的对象

 34         id obj2 = [array1 firstObjectCommonWithArray:otherArray];

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

 36         

 37         

 38         //返回数组中第一次出现的下标位置

 39         NSArray *array4 = [[NSArray alloc]initWithObjects:@"add",@"sub",@"mul",@"zjl",@"mul",@"div", nil];

 40         NSUInteger index = [array4 indexOfObject:@"mul"];

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

 42         //在数组的指定范围内查找第一次出现的对象,并返回下标

 43         NSUInteger indexRange = [array4 indexOfObject:@"mul" inRange:NSMakeRange(3, 3)];

 44         NSLog(@"index2 = %lu",indexRange);

 45         

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

 47         BOOL flag1 = [array1 isEqualToArray:array4];

 48         NSLog(@"flag1 = %i",flag1);

 49         

 50         //获取数组中的第一个元素

 51         id obj3 = [array4 firstObject];

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

 53         

 54         //获取数组中的最后一个元素

 55         id obj4 = [array4 lastObject];

 56         NSLog(@"ojb4 = %@",obj4);

 57         

 58         

 59         //重要:数组的遍历   有三种方法

 60         //1.下标法

 61         NSArray *array5 = @[@"one",@"two",@"three",@"foure",@"five"];

 62         NSUInteger len = [array5 count];

 63         for (int i=0; i<len; i++) {

 64             NSLog(@"array5[%i] = %@",i,[array5 objectAtIndex:i]);

 65         }

 66         //2.枚举器法

 67         NSEnumerator *enumerator = [array5 objectEnumerator]; //生成枚举器对象

 68         //通过枚举器对象来遍历对象

 69         id item = nil;

 70         while (item = [enumerator nextObject]) {

 71             NSLog(@"%@",item);

 72         }

 73         //通过枚举器法反向变量数组

 74         NSEnumerator *reverseEnumerator = [array5 reverseObjectEnumerator];

 75         id item1 = nil;

 76         while (item1 = [reverseEnumerator nextObject]) {

 77             NSLog(@"item1 = %@",item1);

 78         }

 79         //3.快速枚举法  //速度最快

 80         for (id item2 in array5) {

 81             NSLog(@"item2 = %@",item2);

 82         }

 83         

 84         //数组排序,通过选择器

 85         NSArray *array6 = @[@"one",@"two",@"three",@"four",@"five"];

 86         NSArray *array7 = [array6 sortedArrayUsingSelector:@selector(compare:)];

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

 88         

 89         //数组提取

 90         NSArray *array8 = [array6 subarrayWithRange:NSMakeRange(1, 3)];

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

 92         

 93         

 94         //通过对象下标集合获取指定的数组对象

 95         //创建一个下标集合

 96         NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] initWithIndex:0];

 97         [indexSet addIndex:2];

 98         [indexSet addIndex:4];

 99         [indexSet addIndex:0];

100         //通过对象下标集合获取指定的数组对象

101         NSArray *array9 = [array6 objectsAtIndexes:indexSet];

102         NSLog(@"array9 = %@",array9);

103     }

104 }
View Code

 

3.OC可变数组的操作函数(特有的)

 1 int main(int args,const char *argv[])

 2 {

 3     @autoreleasepool {

 4         NSMutableArray *mulArray = [[NSMutableArray alloc] initWithCapacity:20];

 5         NSMutableArray *mulArray1 = [NSMutableArray arrayWithCapacity:20];

 6         

 7         

 8         [mulArray addObject:@"one"];

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

10         

11         //指定位置中插入对象

12         [mulArray insertObject:@"two" atIndex:1];

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

14         

15         //将给定的数组插入到可变数组末尾

16         [mulArray addObjectsFromArray:@[@"123",@"567",@"890"]];

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

18         

19         //删除数组最后一个元素

20         [mulArray removeLastObject];

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

22         

23         //从数组删除指定对象

24         [mulArray removeObject:@"123"];

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

26         

27         //删除数组中指定位置的元素

28         [mulArray removeObjectAtIndex:1];

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

30         

31         //替换指定位置的元素

32         [mulArray replaceObjectAtIndex:0 withObject:@"five"];

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

34         

35         //交换两个位置的元素

36         [mulArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

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

38         

39         [mulArray addObjectsFromArray:@[@"aaa",@"ccc",@"bbb",@"ccc",@"ddd",@"eee",@"fff"]];

40         

41         //在指定范围内删除指定对象

42         [mulArray removeObject:@"567" inRange:NSMakeRange(0, 1)];

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

44         

45         //删除数组中指定的所有对象

46         [mulArray removeObject:@"ccc"];

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

48         

49         //删除所有在传入数组中出现的元素

50         [mulArray removeObjectsInArray:@[@"aaa",@"bbb",@"888"]];

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

52         

53         //删除所有在指定范围内的元素

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

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

56         

57         

58         //用给定的数组 修改数组(重置)数组

59         [mulArray setArray:@[@"123",@"345",@"567",@"789"]];

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

61         

62         

63         //数组排序

64         NSMutableArray *sortArray = [NSMutableArray array];

65         [sortArray sortUsingSelector:@selector(compare:)];

66         NSLog(@"sortArray = %@",sortArray);

67         

68         

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

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

71         [mulArray replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"one",@"two",@"three"]];

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

73     }

74 }
View Code

 

你可能感兴趣的:(数组)