下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习。 在Objective-C中的集合类中主要包括不可变的数组–NSArray,可变的数组–NSMutableArray,不可变的字典–NSDictionary,可变的字典–NSMutableDictionary, 不可变的集合–NSSet,可变的集合–NSMutableSet。
一、数组
1.不可变的数组 NSArray
数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据类型,必须先把数据类型转换成对象,然后再存入集合类中。 NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行NSArray的实例化和初始化工作。
(1)NSArray的初始化
NSArray的便利初始化函数: -(id) initWithObjects : (id) firstObject, ….;
NSArray的便利构造器: +(id) arrayWithObjects: (id) firstObject, …;
demo:
1 2 3 4 |
//NSArray的便利初始化 NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil]; //NSArray的便利构造器 NSArray *array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil]; |
(2)获取数组元素的个数和数组的元素
-(NSUInteger) count; 获取数组元素的个数
-(id) objectAtIndex : (NSUInteger) index;
demo:
1 2 3 4 5 |
//获取数组元素的个数和元素 int count = (int)[array1 count]; //获取相应索引的元素 id element = [array1 objectAtIndex:0]; NSLog(@"array1_count = %d, array[0] = %@", count, element); |
运行结果:
1 |
2014-08-01 16:25:37.117 HelloOC[1285:303] array1_count = 3, array[0] = aaa |
(3)有了count和objectAtIndex我们就可以对数组进行元素的遍历啦
demo:
1 2 3 4 5 6 7 8 |
//封装遍历数组的函数 void array_display(id array) { for (int i = 0 ; i id temp = [array objectAtIndex:i]; NSLog(@"%@", temp); } } |
2.可变数组:NSMutableArray
NSArray的容量是固定的,而NSMutableArray的容量是可变的,我们可以在NSMutableArray实例化的时候先初始化一个容量,不过这个容量不是固定的,不够的时候会自动增加。NSMutableArray是NSArray的子类,是对NSArray的一个扩充。
(1) NSMutableArray的初始化
NSMutableArray的便利初始化函数:-(id) initWithCapacity : (NSUInteger) numItems;
NSMutableArray的便利构造器:+(id) arrayWithCapacity: (NSUInteger) numItems;
demo:
1 2 3 4 |
//NSMutableArray的便利初始化 NSMutableArray *array3 = [[NSMutableArray alloc] initWithCapacity:3]; //NSMutableArray的便利构造器 NSMutableArray *array4 = [NSMutableArray arrayWithCapacity:3]; |
(2)元素的添加和删除
增加元素: -(void) addObject: (id) anObject; –往数组的尾部添加元素
删除全部内容: -(void) removeAllObjects;
删除最后一个元素: -(void) removeLastObject;
通过索引删除元素: -(void) removeObjectAtIndex: (NSUInteger) index;
删除任意一个元素: -(void) removeObject : (id)object;
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//初始化NSMutableArray NSMutableArray *array = [NSMutableArray arrayWithObjects:@"111", @"222", @"333", nil]; //添加元素 [array addObject:@"444"]; //移除元素 [array removeObject:@"111"]; //移除最后一个元素 [array removeLastObject]; //按照索引删除元素 [array removeObjectAtIndex:0]; array_display(array); |
运行结果:
下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习。 在Objective-C中的集合类中主要包括不可变的数组–NSArray,可变的数组–NSMutableArray,不可变的字典–NSDictionary,可变的字典–NSMutableDictionary, 不可变的集合–NSSet,可变的集合–NSMutableSet。
一、数组
1.不可变的数组 NSArray
数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据类型,必须先把数据类型转换成对象,然后再存入集合类中。 NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行NSArray的实例化和初始化工作。
(1)NSArray的初始化
NSArray的便利初始化函数: -(id) initWithObjects : (id) firstObject, ….;
NSArray的便利构造器: +(id) arrayWithObjects: (id) firstObject, …;
demo:
1 2 3 4 |
//NSArray的便利初始化 NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil]; //NSArray的便利构造器 NSArray *array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil]; |
(2)获取数组元素的个数和数组的元素
-(NSUInteger) count; 获取数组元素的个数
-(id) objectAtIndex : (NSUInteger) index;
demo:
1 2 3 4 5 |
//获取数组元素的个数和元素 int count = (int)[array1 count]; //获取相应索引的元素 id element = [array1 objectAtIndex:0]; NSLog(@"array1_count = %d, array[0] = %@", count, element); |
运行结果:
1 |
2014-08-01 16:25:37.117 HelloOC[1285:303] array1_count = 3, array[0] = aaa |
(3)有了count和objectAtIndex我们就可以对数组进行元素的遍历啦
demo:
1 2 3 4 5 6 7 8 |
//封装遍历数组的函数 void array_display(id array) { for (int i = 0 ; i id temp = [array objectAtIndex:i]; NSLog(@"%@", temp); } } |
2.可变数组:NSMutableArray
NSArray的容量是固定的,而NSMutableArray的容量是可变的,我们可以在NSMutableArray实例化的时候先初始化一个容量,不过这个容量不是固定的,不够的时候会自动增加。NSMutableArray是NSArray的子类,是对NSArray的一个扩充。
(1) NSMutableArray的初始化
NSMutableArray的便利初始化函数:-(id) initWithCapacity : (NSUInteger) numItems;
NSMutableArray的便利构造器:+(id) arrayWithCapacity: (NSUInteger) numItems;
demo:
1 2 3 4 |
//NSMutableArray的便利初始化 NSMutableArray *array3 = [[NSMutableArray alloc] initWithCapacity:3]; //NSMutableArray的便利构造器 NSMutableArray *array4 = [NSMutableArray arrayWithCapacity:3]; |
(2)元素的添加和删除
增加元素: -(void) addObject: (id) anObject; –往数组的尾部添加元素
删除全部内容: -(void) removeAllObjects;
删除最后一个元素: -(void) removeLastObject;
通过索引删除元素: -(void) removeObjectAtIndex: (NSUInteger) index;
删除任意一个元素: -(void) removeObject : (id)object;
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//初始化NSMutableArray NSMutableArray *array = [NSMutableArray arrayWithObjects:@"111", @"222", @"333", nil]; //添加元素 [array addObject:@"444"]; //移除元素 [array removeObject:@"111"]; //移除最后一个元素 [array removeLastObject]; //按照索引删除元素 [array removeObjectAtIndex:0]; array_display(array); |
运行结果: