1.NSDictionary不可变字典类
字典 是一个容器 跟数组一样 可以保存数据
保存的形式 是以键值对的形式
一个key对应一个value
key 和 value 必须是对象
key作为钥匙 要具有唯一性 在开发中 一半使用字符串作为key值
value可以是一个很复杂的结构 例如字典里嵌套一个字典
字典里保存的键值对是无序的
不可变字典切记不能进行增删操作
// 用两个数组来初始化 一个不可变字典
// key的数组
NSArray *keys = @[@"name",@"sex",@"age"];
// value 的数组
NSArray *values = @[@"王龙", @"男", @"15"];
// 初始化字典 便利构造器
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@",dic); // 打印结果顺序不一样, 无序
// 自定义初始化方法
NSDictionary *dic1 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
// 初始化一个字典
// 使用该方法切记value : key 顺序
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"wanglong", @"name",@"nan", @"sex",@"18", @"age", nil];
// 语法糖初始化
// 顺序 key : value
NSDictionary *dic = @{@"name":@"wanglong",
@"sex":@"nan",
@"age":@"18"};
// 把所有的key都取出来
NSArray *arr = [dic allKeys]; // allkeys的返回值是不可变数组
// 取出所有的value
NSArray *arr1 = [dic1 allValues];
// 根据key取出字典里对应的value
// 取出的是什么类型 就用什么类型去接收
NSString *value = [dic objectForKey:@"name"];
2.可变字典
// 初始化一个空字典
// 切记 必须进行初始化才能使用字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
// 初始化的时候给一个建议的容量
NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithCapacity:10];
// 初始化一个字典 并添加键值对
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] init];
[dic2 setObject:@"wanglong" forKey:@"name"];
[dic2 setObject:@"nan" forKey:@"sex"];
[dic2 setObject:@"18" forKey:@"age"];
// 根据key删除键值对
[dic2 removeObjectForKey:@"sex"];
// 删除所有
[dic removeAllObjects];
// 快速遍历 一般只用来打印 删除可能会造成崩溃
// 使用快速遍历forin 时遍历字典 是遍历字典中的所有key值
for (NSString *key in dic) {
// 用所有key取出Value
NSLog(@"key = %@ value = %@",key,[dic objectForKey:key]);
3.不可变集合 NSSet
集合的特点: 无序 不重复
// 初始化
NSSet *set = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"2" ,@"2", @"2", nil];
// 获取长度
NSUInteger count = [set count];
NSLog(@"%lu",count); // count = 3
// 获取集合中的一个元素 该元素是系统认为最合理的一个元素
NSString *str = [set anyObjects];
NSLog(@"%@",str);
4.可变集合
// 初始化空的集合
NSMutable *set = [NSMutableSet set];
// 添加元素
[set addObject:@"2"];
[set addObject:@"1"];
[set addObject:@"3"];
[set addObject:@"2"];
NSLog(@"%@",@"2");
NSLog(@"%@",set);
// 删除所有元素
[set removeAllObjects];
NSLog(@"%@",set);
// 计算重复元素个数的集合
NSSet *set1 = [NSSet setWithObjects:@"1", @"2", @"3", @"3", @"3", @"3", @"3", @"3", nil];
NSCountedSet *set = [NSCountedSet setWithSet:set1];
NSLog(@"%@",set);
//
// // 获取重复的个数
NSInteger count = [set countForObject:@"3"];
NSLog(@"%ld",count);