int main(int argc,constchar * argv[]) {
// 字典是一个容器跟数组一样可以保存数据
// 保存的形式是以键值对的形式保存
// 一个key对应一个value
// key和Value必须是对象
// key作为钥匙要具有唯一性在开发中一般使用字符串作为key值
// value 可以是一个很复杂的结构例如字典里嵌套字典等
// 字典里保存的键值对是无序的
// 不可变字典切记不能对不可变字典进行增删
// 用两个数组类初始化一个不可变字典
// key的数组
NSArray *keys =@[@"name",@"sex",@"age"];
// value的数组
NSArray *values=@[@"wl",@"男",@"18"];
// 初始化字典
NSDictionary *dic = [NSDictionarydictionaryWithObjects:valuesforKeys:keys];
NSLog(@"%@", dic);
// 自定义初始化方法
NSDictionary *dic2 = [[NSDictionaryalloc]initWithObjects:valuesforKeys:keys];
NSLog(@"%@", dic2);
// 使用该方法初始化切记 value : key顺序
NSDictionary *dic1 = [NSDictionarydictionaryWithObjectsAndKeys:
@"wangl",@"name",
@"nan",@"sex",
@"18",@"age",
nil];
NSLog(@"%@", dic1);
// 把所有key取出来
NSArray *key = [dic1allKeys];
NSLog(@"%@", key);
NSDictionary *dic3 = [[NSDictionaryalloc]initWithObjectsAndKeys:@"wangl",@"name",@"nan",@"sex",@"18",@"age",nil];
NSArray *allkey = [dic3allKeys];
NSLog(@"%@", allkey);
// 取出所有value
NSArray *value = [dic3allValues];
NSLog(@"%@", value);
// 语法糖
// 初始化顺序 key : value
NSDictionary *dic4 =@{@"name":@"wl",@"sex":@"nan",@"age":@"18"};
NSLog(@"%@", dic4);
// 根据key取出字典中对应的 value
// 要知道你取出的是什么类型就用什么类型去接收TA
NSString *v = [dic4objectForKey:@"name"];
NSLog(@"%@", v);
NSString *age = dic4[@"age"];
NSLog(@"%@", age);
// 获取字典的元素个数
NSLog(@"%lu", [dic4count]);
// 可变字典
// 初始化一个空字典切记必须进行初始化才能使用字典
NSMutableDictionary *mutDic = [NSMutableDictionarydictionary];
// 初始化的时候给一个建议的容量
// NSMutableDictionary *mutDic1 = [[NSMutableDictionary alloc]initWithCapacity:10];
// NSMutableDictionary *mutDic2 = [[NSMutableDictionary alloc]init];
// 添加键值对
[mutDic setObject:@"wl"forKey:@"name"];
[mutDic setObject:@"nan"forKey:@"sex"];
[mutDic setObject:@"18"forKey:@"age"];
NSLog(@"%@", mutDic);
// 根据key删除键值对
[mutDic removeObjectForKey:@"sex"];
NSLog(@"%@", mutDic);
// 删除所有键值对
[mutDic removeAllObjects];
NSLog(@"%@", mutDic);
// 创建字典管理前三排学生每排为一组并输出
NSArray *stuValue1 =@[@"xuyang",@"zhaojie",@"zhangwen",@"zhuangzhuang"];
NSArray *stuValue2 =@[@"dajun",@"tingting",@"zhiyan",@"bingqi"];
NSArray *stuValue3 =@[@"zangjie",@"zhangpeng",@"qiaodi",@"taotao"];
NSMutableDictionary *stuDic = [NSMutableDictionarydictionary];
[stuDic setObject:stuValue1forKey:@"NO.1"];
[stuDic setObject:stuValue2forKey:@"NO.2"];
[stuDic setObject:stuValue3forKey:@"NO.3"];
NSLog(@"%@",stuDic);
// 创建一个字典姓名:dj性别:女年龄:22
NSDictionary *mydic =@{@"name":@"dj",@"sex":@"女",@"age":@"22"};
// 遍历字典
// 获取所有key
NSArray *k = [mydicallKeys];
for (int i =0; i < [kcount]; i++) {
// 取出每一个key
NSString *key = k[i];
// 利用key取出对应的value
NSString *value = [mydicobjectForKey:key];
// 或者 NSString *value = mydic[@"k[i]"];
NSLog(@"value = %@ key = %@", value, key);
}
// 快速遍历
// for (容器中存的对象的类型str in要遍历的容器(数组或字典)) {
// NSLog(@"%@", str);
// }
for (NSString *objin stuValue1) {
NSLog(@"%@", obj);
}
// 使用快速遍历forin时
// 遍历字典是遍历字典中的所有key
// 遍历数组是遍历数组中的每一个元素
for (NSString *objin mydic) {
// 用所有key取出value
NSString *str = [mydicobjectForKey:obj];
NSLog(@"%@ = %@", obj, str);
}
// 集合:无序不重复
// 不可变集合
NSSet *set = [[NSSetalloc]initWithObjects:@"2",@"4",@"3",@"4",nil];
NSLog(@"%@",set);
NSLog(@"%ld",[setcount]);
// 获取集合中的一个元素
// anyObject返回一个计算机认为最合理的一个元素
NSString *setStr = [setanyObject];
NSLog(@"%@", setStr);
// 可变集合
// 初始化空的集合
NSMutableSet *mutSet = [NSMutableSetset];
// 添加元素
[mutSet addObject:@"2"];
[mutSet addObject:@"1"];
[mutSet addObject:@"3"];
[mutSet addObject:@"2"];
NSLog(@"%@", mutSet);
// 删除 2元素
[mutSet removeObject:@"2"];
NSLog(@"%@", mutSet);
// 删除所有元素
[mutSet removeAllObjects];
NSLog(@"%@", mutSet);
// 计算重复元素个数的集合
NSArray *arr =@[@"1",@"2", @"3",@"3",@"3",@"3",@"3",@"3"];
NSCountedSet *countset = [NSCountedSetsetWithArray:arr];
NSInteger count = [countsetcountForObject:@"3"];
NSLog(@"%ld", count);
// 数组排序
// 不可变数组排序
NSArray *array =@[@"12",@"3", @"26",@"4",@"5"];
NSArray *arrNew = [arraysortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arrNew);
// 可变数组排序
// 可变数组排序是不需要返回值的因为操作的是原数组
NSMutableArray *array1 = [NSMutableArrayarrayWithObjects:@"13",@"11",@"7",@"5",nil];
[array1 sortUsingSelector:@selector(compare:)];
NSLog(@"%@",array1);
return0;
}