一、数组类
1、C语言数组的特点:数组是一个有序的集合,用来存储相同数据类型的元素,通过下标访问数组中的元素,下标从0开始。
2、OC中的数组只能存储对象类型(必须是NSObject对象),但是对于对象的类型没有限制。
1)通过下标访问数组元素,下标从0开始。
2)NSArray:不可变数组,即:对象创建好以后,数组中元素个数不能发生变化。
3)NSMutableArray:可变数组,即:对象创建好以后,数组中的元素可以灵活的进行增删改操作。
3、NSArray的创建:
1)初始化方法
NSArray *name = [[NSArray alloc] initWithObjects:@"frank", @"duck", @"money", nil];
注:nil作为数组存放元素的结束标志,多个元素通过逗号间隔。
2)便利构造器
NSArray *name1 = [NSArray arrayWithObjects:@"frank", @"duck", @"money", nil];
3)字面量:使用“@[]”,”[]”中存入对应的对象,对象之间使用”,"相隔
NSArray *name2 = @[@"frank", @"duck", @"money"];
4、NSArray常用方法
// 元素个数 NSLog(@"count = %ld", names.count); // 获取数组中指定下标对应的元素 NSString *s = [names objectAtIndex:]; NSLog(@"s = %@", s); // 字面量方式获取数组元素 NSLog(]); // 用来判断数组中是否包含某一个给定的对象 BOOL isContain = [name containsObject:@"duck"]; NSLog(@"isContain = %d", isContain); // 获取数组元素对应的索引 NSUInteger index = [name indexOfObject:@"duck"]; NSLog(@"index = %ld", index); // 将字符串按规定的字符进行截取,得到一个数组 NSString *string = @"frank,duck,money"; NSArray *stringArray = [string componentsSeparatedByString:@","]; NSLog(@"stringArray = %@", stringArray); string = [stringArray componentsJoinedByString:@""]; NSLog(@"string = %@", string);
5、NSMutableArray概述
NSMutableArray是OC中的可变数组,NSMutableArray的父类是NSArray,具有NSArray所有的方法,同时在NSArray的基础上添加了对自身对象增删改的操作。
6、NSMutableArray创建
1)初始化方法(capacity 容量)
NSMutableArray *mname = [[NSMutableArray alloc] initWithCapacity:];
2)便利构造器
NSMutableArray *mname = [NSMutableArray arrayWithCapacity:]; NSDictionary *d2 = [NSDictionary dictionaryWithObjects:@[@"frank", @"duck", @"monkey"] forKeys:@[@"name1", @"name2", @"name3"]];
3)字面量
NSMutableArray *mname = [@[@"frank", @"duck", @"money", @"cow"] mutableCopy];
7、NSMutableArray常用方法
// 数组中添加一个对象 [mname addObject:@"black"]; NSLog(@"mname = %@", mname); // 数组中指定位置插入一个对象 [mname insertObject:]; NSLog(@"mname = %@", mname); // 数组中移除一个对象 [mname removeObject:@"white"]; NSLog(@"mname = %@", mname); // 移除数组中最后一个对象 [mname removeLastObject]; NSLog(@"mname = %@", mname); // 移除数组中指定位置的元素 [mname removeObjectAtIndex:]; NSLog(@"mname = %@", mname); // 移除数组中所有的元素 [mname removeAllObjects]; NSLog(@"mname = %@", mname); // 使用指定的对象替换指定位置的对象 [mname replaceObjectAtIndex: withObject:@"white"]; NSLog(@"mname = %@", mname); // 交换指定的两个下标对应的对象 [mname exchangeObjectAtIndex: withObjectAtIndex:]; NSLog(@"mname = %@", mname);
二、字典类
1、字典是一个无序的集合,用来存储具有一一对应关系的数据。字典中存储的每一个对象都是一对键值对,键值对包含两个部分key和value,key与value的值都是对象类型。对于每一对key-value称为一个条目(Entry)。
2、字典的特点:与数组不同,字典靠key存取元素;key与value必须都是对象类型;字典中键值对的存储是无序的;字典分为两种类型不可变字典(NSDictionary),可变字典(NSMutableDictionary)。
3、NSDictionary的创建
1)初始化方法
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
注:先写value,再写key,一对key-value是一个元素,nil作为字典存放元素的结束标志。
2)便利构造器
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
3)字面量
使用“@{}”,“{}”中存入字典元素,key:value一一对应,元素之间使用“,”相隔。
NSDictionary *d1 = @{@"key1":@"frank", @"key2":@"duck"};
4、NSDictionary的常用操作
// 获取字典中键值对的个数 NSLog(@"count = %ld", dictionary.count); // 获取字典中所有的键 NSLog(@"allKeys = %@", dictionary.allKeys); // 获取字典中所有的值 NSLog(@"allValues = %@", dictionary.allValues); // 根据键获得对应的值 NSString *anAttribute = [dictionary objectForKey:@"name1"]; NSLog(@"anAttribute = %@", anAttribute); // 下标法 NSLog(@"key1 = %@", d1[@"key1"]);
5、NSMutableDictionary概述
NSMutableDictionary的父类是NSDictionary,NSMutableDictionary具有父类所有的方法,同时在其基础上添加了增删改的操作。
6、NSMutableDiction的创建
1)初始化操作
NSMutableDictionary *md = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
2)便利构造器
NSMutableDictionary *md1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
3)字面量
NSMutableDictionary *md2 = [@{@"key1":@"frank", @"key2":@"duck"} mutableCopy];
7、NSMutableDictionary的常用方法
// 字典中添加新的键值对以及修改某一对键值对 [md setObject:@"black" forKey:@"name4"]; NSLog(@"%@", md); // 移除指定的键对应键值对 [md removeObjectForKey:@"name3"]; NSLog(@"%@", md); // 移除字典中所有的键值对 [md removeAllObjects]; NSLog(@"%@", md);
三、集合类
1、集合的描述:集合作为OC中另一个容器,开发过程中使用的范围并没有数组和字典频繁。OC中的集合分为不可变集合(NSSet)和可变集合(NSMutableSet)两种。
2、集合的特点:1)互异性,集合中不能够存在两个相同的对象
2)无序性,集合中的对象没有顺序,先添加的对象不一定在集合中的第一个位置,后添加的也不一定在最后的位置。
3)集合经常用来处理重用问题
3、NSSet的创建
1)初始化方法
NSSet *set = [[NSSet alloc] initWithObjects:@"frank", @"duck", @"monkey", nil];
2)便利构造器
NSSet *set1 = [NSSet setWithObjects:@"frank", @"duck", @"monkey", nil];
4、NSSet的常用操作
// 任意取出一个元素 NSString *str = [set anyObject]; NSLog(@"str = %@", str); // 取出所有元素 NSArray *arra1 = [set allObjects]; NSLog(@"str1 = %@", arra1); // 获取集合中元素的个数 NSLog(@"count = %lu", set.count); // 判断集合中是否包含某一个指定的对象 BOOL isHave = [set containsObject:@"frank"]; NSLog(@"isHave = %d", isHave);
5、NSMutableSet的创建
1)初始化方法
NSMutableSet *mSet = [[NSMutableSet alloc] initWithObjects:@"frank", @"duck", @"monkey", nil];
2)便利构造器
NSMutableSet *mSet1 = [NSMutableSet setWithObjects:@"frank", @"duck", @"monkey", nil];
6、NSMutableSet的常用操作
// 添加对象 [mSet addObject:@"-1"]; NSLog(@"mSet = %@", mSet); // 删除对象 [mSet removeObject:@"-1"]; NSLog(@"mSet = %@", mSet); // 删除所有对象 [mSet removeAllObjects]; NSLog(@"mSet = %@", mSet);