进击的KFC:OC(五): 字典、集、数组排序
2015-10-31 13:56
363 查看
⼀、字典类
字典⽤于保存具有映射关系(key-value对)数据的集合。
对于“name:张三”来讲,key就是“name”,key对应的value是“张三”
⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value对的容器。
字典类的特点
与数组不同,字典靠key存取元素。
key不能重复,value必须是对象。
key 作为钥匙,要具有唯一性 在开发中,一般使用字符串作为
key值
value 可以是一个很复杂的结构,例如字典嵌套字典等
键值对在字典中是⽆序存储的。(若是有序的,就成数组了)
字典分:不可变字典(NSDictionary)和可变字典
(NSMutableDictionary)
初始化一个字典
1.用两个数组 来初始化 一个不可变字典
// key 的数组:
NSArray *keys = [[NSArray alloc]initWithObjects:@”name”,@”sex”,@”age”, nil];
// value 的数组
NSArray *values = @[@”aaa”,@”man”,@”3”];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
2.初始化一个字典
// 使用下面这个方法初始化时:切记: 是 value key 的顺序
把所有key取出来
NSArray *kes = [dic allKeys]; // allKeys,获取全部的key值,返回值类型是数组
取出所有value
NSArray *values = [dic allValues];
3.语法糖 key : value (和上面的2方法区分)
根据key取出字典中对应的value
NSString *str = [dic objectForKey:@”sex”];
语法糖 取出字典key对应的value (类似数组a[1]这样,dic[key])
NSString *age = dic[@”age”];
1.初始化一个空字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2.初始化的时候 给一个建议的容量
3.初始化一个空字典
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];
添加键值对(注意:是 set 不是add)
[dic setObject:@”Wanglong” forKey:@”name”];
[dic setObject:@”man” forKey:@”sex”];
[dic setObject:@”3” forKey:@”age”];
删除: 把整个键值对删除了
[dic removeObjectForKey:@”sex”];
NSLog(@”%@”,dic);
// 删除全部:
[dic removeAllObjects];
NSLog(@”%@”,dic);
⼆、集合类
存储元素必须是对象类型
iOS中⽤Set表⽰集合,分NSSet和NSMutableSet
NSSet的常⽤⽅法
创建集合对象。
NSSet *set = [NSSet alloc]initWithObjects@”1”,@”2”,nil]
获取元素个数。
[set count]
获取集合中的某个元素。
[set anyObject]
NSMutableSet的常⽤⽅法
创建集合对象。
NSMutableSet *set = [NSMutableSet set];
添加元素。
[set addObject:@”2”];
删除元素
[set removeObject:@”2”];
字典⽤于保存具有映射关系(key-value对)数据的集合。
对于“name:张三”来讲,key就是“name”,key对应的value是“张三”
⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value对的容器。
字典类的特点
与数组不同,字典靠key存取元素。
key不能重复,value必须是对象。
key 作为钥匙,要具有唯一性 在开发中,一般使用字符串作为
key值
value 可以是一个很复杂的结构,例如字典嵌套字典等
键值对在字典中是⽆序存储的。(若是有序的,就成数组了)
字典分:不可变字典(NSDictionary)和可变字典
(NSMutableDictionary)
pragma mark ——– 不可变字典
不可变字典: (切记:不能对不可变字典进行增删)初始化一个字典
1.用两个数组 来初始化 一个不可变字典
// key 的数组:
NSArray *keys = [[NSArray alloc]initWithObjects:@”name”,@”sex”,@”age”, nil];
// value 的数组
NSArray *values = @[@”aaa”,@”man”,@”3”];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
2.初始化一个字典
// 使用下面这个方法初始化时:切记: 是 value key 的顺序
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"wanglong",@"name", @"man",@"sex", @"3",@"age" ,nil];
把所有key取出来
NSArray *kes = [dic allKeys]; // allKeys,获取全部的key值,返回值类型是数组
取出所有value
NSArray *values = [dic allValues];
3.语法糖 key : value (和上面的2方法区分)
NSDictionary *dic = @{@"name":@"wanglong", @"sex":@"man", @"age":@"3" };
根据key取出字典中对应的value
NSString *str = [dic objectForKey:@”sex”];
语法糖 取出字典key对应的value (类似数组a[1]这样,dic[key])
NSString *age = dic[@”age”];
pragma mark ——– 可变字典
切记:必须进行初始化,才能使用字典1.初始化一个空字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2.初始化的时候 给一个建议的容量
NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]initWithCapacity:10];
3.初始化一个空字典
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];
添加键值对(注意:是 set 不是add)
[dic setObject:@”Wanglong” forKey:@”name”];
[dic setObject:@”man” forKey:@”sex”];
[dic setObject:@”3” forKey:@”age”];
删除: 把整个键值对删除了
[dic removeObjectForKey:@”sex”];
NSLog(@”%@”,dic);
// 删除全部:
[dic removeAllObjects];
NSLog(@”%@”,dic);
// 创建一个字典 姓名:王龙 性别:男 年龄: NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setObject:@"王龙" forKey:@"姓名"]; [dic setObject:@"男" forKey:@"性别"]; [dic setObject:@"18岁" forKey:@"年龄"];
// 遍历字典: // 遍历数组 // 取出所有key NSArray *keys = [dic allKeys]; for (int i = 0; i < [keys count]; i++) { // 取出每一个key NSString *key = keys[i]; // 再利用这个key取出对应的value NSString *value = dic [key]; NSLog(@"%@ %@",key,value); // 或者: // NSString *value2 = [dic objectForKey:keys[i]]; // NSLog(@"%@ %@",keys[i],value2); }
// 快速遍历forin时 // 遍历字典 是遍历字典中的所有key // for (NSString *obj in dic) { // NSLog(@"%@",obj); // // 用所有key取出value // NSLog(@"%@",[dic objectForKey:obj]); // // 结合起来 // NSLog(@"key = %@ value = %@",obj,[dic objectForKey:obj]); // }
⼆、集合类
pragma mark —— 集合
存储的元素是⽆序的存储元素必须是对象类型
iOS中⽤Set表⽰集合,分NSSet和NSMutableSet
NSSet的常⽤⽅法
创建集合对象。
NSSet *set = [NSSet alloc]initWithObjects@”1”,@”2”,nil]
获取元素个数。
[set count]
获取集合中的某个元素。
[set anyObject]
NSMutableSet的常⽤⽅法
创建集合对象。
NSMutableSet *set = [NSMutableSet set];
添加元素。
[set addObject:@”2”];
删除元素
[set removeObject:@”2”];
pragma mark ——- 数组排序
// 不可变数组 NSArray *arr = @[@"1",@"3",@"4",@"6",@"8"]; // 这种比较方法,对元素只比较第一位, 升序 NSArray *arrnew = [arr sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",arrnew); // 可变数组 // 可变数组排序 是不需要返回值的,因为操作的是原数组 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil]; [array sortUsingSelector:@selector(compare:)]; NSLog(@"%@",array);
相关文章推荐
- 一些课后实践about java
- 如何获取一个范围内的随机整数
- Java排序
- codeforces 76A Gift 最小生成树
- [leetcode] 139. Word Break 解题报告
- mysql 修改 character_set_database 编码格式
- Asp.net mvc生成验证码
- C语言入门----输出语句
- 统计学习方法之决策树
- 用例图练习
- ubuntu下的mysql不支持中文,修改方法;
- cocos2dx播放音乐
- 收藏一个Ping的小工具类,可用于网络中检测目的设备是否在线
- 20151031团队建设有感
- Contos7 装bcm4312无线网卡驱动
- Oracle 12C -- clone a remote pdb
- 你不知道的JavaScript--Item24 ES6新特性概览
- NULL和nullptr的区别
- 分析一个设备驱动程序结构
- 爬虫--scrapy 初探