OC初期-05字典,集合
2015-11-05 20:34
309 查看
字典
字典⽤于保存具有映射关系(key-value对)数据的集合。一个key-value对认为是一个条⽬目(Entry),字典是存储key-value 对的容器。
特点:
与数组不同,字典靠key存取元素。key不能重复,value必须是对象。
键值对在字典中是⽆无序存储的。
字典分:不可变字典(NSDictionary)和可变字典 (NSMutableDictionary)
不可变字典NSDictionary
字典一旦创建,键值对就不可更改,不可添加,不可删除。
仅能读取key或者value。
创建字典对象
1.用两个数组初始化一个不可变字典
NSArray *keys = @[@"name",@"sex",@"age"]; NSArray *values = @[@"jtt",@"nan",@"24"]; NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
2.自定义初始化方法
NSDictionary *dic1 = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
3.构造遍历器方法(value,key)
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys: @"jtt",@"name", @"nan",@"sex", @"24",@"age",nil];
4.语法糖(初始化顺序 { key : value ,…})
NSDictionary *dic = @{@"name" : @"jtt", @"sex" : @"nan", @"age" : @"18"};
获取所有key值,获取所有value值。
NSArray *keys = [dic2 allKeys]; NSArray *values = [dic2 allValues];
通过key值查询value。(取出的是什么类型,就用什么类型去接收)
NSString *value = [dic objectForKey:@"name"]; NSString *age = dic[@"age"];
获取元素个数
NSInteger count = [dic count]; 
可变字典(必须先进行初始化,才能使用)
创建对象
1.NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2.初始化的时候 给一个建议的容量
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];
3.NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]init];
添加键值对
[dic1 setObject:@"jtt" forKey:@"name"]; [dic1 setObject:@"nan" forKey:@"sex"]; [dic1 setObject:@"24" forKey:@"age"];
根据key删除键值对
[dic1 removeObjectForKey:@"sex"]; NSArray *keys = [dic1 allKeys]; [dic1 removeObjectsForKeys:keys];
快速遍历
for (容器中存的对象的类型 obj in 要遍历的容器(数组或字典)) {NSLog(@”%@”,obj);
}
使用快速遍历forin时 一般只用来打印
遍历字典 是遍历字典中的所有key
for (NSString *key in dic) { // 用所有key取出value NSString *value = dic[key]; NSLog(@"%@ = %@",key,value); }
遍历数组 是遍历数组中的每一个元素
for (NSString *str in arr1) { NSLog(@"%@",str); }
集合
特点:无序,不重复不可变集合
初始化集合NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil];
获取长度
NSInteger count = [set count];
获取集合中的一个元素,anyObject 返回一个计算机认为最合理的元素
NSString *str = [set anyObject];
可变集合
初始化空的集合NSMutableSet *set = [NSMutableSet set];
添加元素
[set addObject:@"2"]; [set addObject:@"1"]; [set addObject:@"3"]; [set addObject:@"2"];
3 删除元素
[set removeObject:@"2"]; [set removeAllObjects];
4.计算重复元素个数的集合
NSArray *arr = @[@"1",@"2",@"3",@"3",@"3" ]; NSCountedSet *set3 = [NSCountedSet setWithArray:arr]; NSInteger count = [set3 countForObject:@"3"]; NSLog(@"%ld",count);
数组排序
不可变数组排序
NSArray *array = @[@"1",@"3",@"4",@"26",@"8"]; NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",arrayNew);
可变数组排序(不需要返回值,操作的是原数组)
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil]; [arr sortUsingSelector:@selector(compare:)]; NSLog(@"%@",arr);
相关文章推荐
- Linux内存
- Linux内存
- 归档、解归档(序列化、反序列化)
- 玩转树莓派--GPIO操作
- keepalived入门之配置文件详解(3)
- 设计模式:模版模式(Template Pattern)
- 【174】C#添加非默认字体
- request body stream exhausted错误解决方案
- Codeforces Round #329 (Div. 2)
- Codeforces Round #329 (Div. 2)A. 2Char
- 注册AxtiveX控件
- 拉普拉斯近似算法小结
- STM32F407+DP83848
- python关于 date的使用
- 这几天的总结
- 漫谈CSS transform动画技术
- 关于 Repository和UnitOfWork 模式的关系
- Java Servlet工作原理问答
- leetcode 4 Median of Two Sorted Arrays
- 清除浮动的6中方法