OC第五天之 Dictionary NSSet 数组排序
2015-11-02 21:04
381 查看
字典 是一个容器 跟数组一样 可以保存数据 保存的形式 是以 键值对的形式保存 一个key对应一个value key和value必须是对象 key作为钥匙 要具有唯一性 在开发中一般使用字符串作为key值 value 可以是一个很复杂的结构 例如字典里嵌套字典等 字典里保存的键值对是无序的 下面是dictionary的结构图 key value @"A" 对应 姓A的一个联系人 @"A" 对应 保存姓A所有人的数组 @"A" 对应 一个字典 @"男":保存姓A所有男人的一个数组 @"女":保存姓A所有女人的一个数组 不可变字典 切记不能对不可变字典进行增删 用两个数组 来初始化 一个不可变字典 两个数组元素是对应,顺序不一样 key的数组 NSArray *keys = @[@"name",@"sex",@"age"]; // value的数组 NSArray *values = @[@"wanglong",@"man",@"18"]; 初始化字典 NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys]; NSLog(@"%@",dic); NSDictionary *dic = [[NSDictionary alloc]initWithObjects:values forKeys:keys]; NSLog(@"%@",dic); 初始化一个字典 使用该方法初始化 切记value :key顺序 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"wang",@"name", @"nan",@"sex", @"18",@"age", nil]; NSLog(@"%@",dic); // 把所有key取出来 NSArray *keys = [dic allKeys]; NSLog(@"%@",keys); // 自定义初始化方法 NSDictionary *dic1 = [[NSDictionary alloc]initWithObjectsAndKeys:@"wang",@"name",@"nan",@"sex",@"18",@"age", nil]; NSLog(@"%@",dic1); // 取出所有的Value NSArray *values = [dic1 allValues]; NSLog(@"%@",values); // 语法糖 // 初始化顺序 key:value NSDictionary *dic = @{@"name":@"wang", @"sex":@"nan",@"age":@"18"}; NSLog(@"%@",dic); // 根据key取出字典中的对应的value // 要知道 你取出的是什么类型 你就用什么类型去接收它 NSString *value = [dic objectForKey:@"name"]; NSLog(@"%@",value); // 语法糖 取出字典中key对应的value NSString *age = dic[@"age"]; NSLog(@"%@",age); // 获取字典的元素个数 NSLog(@"%lu",[dic count]); 可变字典 初始化一个空字典 切记:必须进行初始化 才能使用字典 NSMutableDictionary *dic = [NSMutableDictionary dictionary];
// // 初始化的时候 给一个建议的容量
// NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]initWithCapacity:10];
// NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];
[dic setObject:@”wang” forKey:@”name”];
[dic setObject:@”nan” forKey:@”sex”];
[dic setObject:@”18” forKey:@”age”];
// 根据key删除键值对
[dic removeObjectForKey:@”sex”];
// 删除所有的键值对
[dic removeAllObjects];
NSLog(@”%@”,dic);
创建字典,管理前三排学生,每排为1组 并输出 NSMutableArray *array1 = [NSMutableArray array]; [array1 addObject:@"斜阳"]; [array1 addObject:@"赵姐"]; [array1 addObject:@"张文"]; [array1 addObject:@"壮壮"]; NSMutableArray *array2 = [NSMutableArray array]; [array2 addObject:@"大军"]; [array2 addObject:@"天天"]; [array2 addObject:@"小强"]; [array2 addObject:@"冰淇"]; NSArray *array3 = @[@"张杰",@"张鹏",@"乔迪",@"逃逃"]; NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setObject:array1 forKey:@"first"]; [dic setObject:array2 forKey:@"second"]; [dic setObject:array3 forKey:@"third"]; NSLog(@"%@",dic); // 创建一个字典 姓名:王龙 性别:男 年龄:18岁 NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setObject:@"王龙" forKey:@"name"]; [dic setObject:@"男" forKey:@"sex"]; [dic setObject:@"18岁" forKey:@"age"]; // 遍历字典 // 获取所有key NSArray *array = [dic allKeys]; for (int i = 0; i < [array count]; i++) { // 取出每一个key 利用这个key取出对应的Value NSString *str =[dic objectForKey:array[i]];
// NSString *str = dic[array[i]];
// 打印
NSLog(@”%@:%@”,array[i],str);
} 快速遍历 for (容器中存取的对象类型 in 要遍历的容器(数组或字典)) { NSLog(@"%@",obj); } 数组的遍历 for (NSString *obj in array) { NSLog(@"%@",obj); } 快速遍历字典 使用快速遍历forin时 快速变量 一般只用来打印 遍历字典 是遍历字典中的所有key 遍历数组 是遍历数组中的每一个元素 for (NSString * key in dic) { // 用所有key取出value NSLog(@"%@:%@",key,dic[key]); } 集合: 无序 不重复 不可变集合 NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil]; // 获取长度 NSLog(@"%ld",[set count]); NSLog(@"%@",set); // 获取集合中的一个元素 // anyObject返回一个计算机认为最合理的一个元素 NSString *str = [set anyObject]; NSLog(@"%@",str); 可变集合 初始化空的集合 NSMutableSet *set = [NSMutableSet set]; // 添加元素 [set addObject:@"2"]; [set addObject:@"1"]; [set addObject:@"3"]; [set addObject:@"2"]; NSLog(@"%@",set); // 删除2元素 [set removeObject:@"2"]; NSLog(@"%@",set); // 删除所有元素 [set removeAllObjects]; NSLog(@"%@",set); 计算重复元素个数的集合 NSArray *array = @[@"1",@"2",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",@"3",]; NSCountedSet *set = [NSCountedSet setWithArray:array]; NSInteger count = [set countForObject:@"3"]; NSLog(@"%ld",count); 数组排序 不可变数组排序 下面这个方法只能比较一位数 NSArray *array = @[@"A",@"D",@"C",@"F",@"B",@"E",]; NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",arrayNew); 可变数组排序 可变数组排序 是不需要返回值的 因为操作的是原数组 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5",nil]; [array sortUsingSelector:@selector(compare:)]; NSLog(@"%@",array);
相关文章推荐
- sapi_module_struct 研究(一)
- 【LeetCode从零单刷】House Robber
- RCNN 安装编译与MATLAB2014下问题解决
- C#编程练习
- hdu 5532 Almost Sorted Array
- win7系统电脑机箱异常问题的解决方法
- 一次快速排序错误引发的思考
- 求排列的逆序数<归并><C++>
- listview 加载网络图片 item中上下有留白现象
- C/C++高阶语法:函数指针及其应用
- SELECTOR
- 软件文档的概念和细分
- TCP/IP实现以及常见问题
- 小电梯,学问大
- linux 基本操作笔记
- HDU 4027 Can you answer these queries?
- 【离散数学】实验三 偏序关系中盖住关系的求取及格论中有补格的判定
- 贾志鹏线性筛
- 我的电磁学讲义10:磁感应强度 毕奥-萨伐尔定律
- 【即时通讯】即时通讯及XMPP概述及…