OC第五天之 Dictionary NSSet 数组排序

 字典 是一个容器 跟数组一样  可以保存数据
 保存的形式  是以 键值对的形式保存
 一个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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值