Objc-C 知识点回顾 六 字典、集合

1.NSDictionary
        //不可变字典类
        //(1)如果不创建, 不能够使用
        //(2)内部以key-value(键值对)形式存储
        //(3)key必须唯一
        //(4)是无序集合
        //(5)value必须为对象, key一般为NSString
        //name: 张三, age: 18, gender: 男
        //创建字典
        NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name", [NSNumber numberWithInt:18], @"age", @"男", @"gender", nil];
        NSLog(@"%@", dic);
        //通过key获取value值
        NSString *name = [dic objectForKey:@"name"];
        NSLog(@"%@", name);
        //获取所有的value值
        NSArray *values = [dic allValues];
        NSLog(@"%@", values);
        //获取所有的key值
        NSArray *keys = [dic allKeys];
        NSLog(@"%@", keys);
        //获取键值对的个数
        NSUInteger count = [dic count];
        NSLog(@"%ld", count);
2.NSMutableDictionary
        //可变字典类, 继承于NSDictionary
        //创建可变字典
        NSMutableDictionary *mDic = [[NSMutableDictionary alloc] initWithCapacity:0];
        //添加键值对
        [mDic setObject:@"张三" forKey:@"name"];
        [mDic setObject:[NSNumber numberWithInteger:18] forKey:@"age"];
        [mDic setObject:@"男" forKey:@"gender"];
        NSLog(@"%@", mDic);
        //删除键值对
        [mDic removeObjectForKey:@"name"];
        NSLog(@"%@", mDic);
        //修改键值对
        [mDic setObject:@"女" forKey:@"gender"];
        [mDic setObject:[NSNumber numberWithInteger:17] forKey:@"age"];
        NSLog(@"%@", mDic);
        //遍历字典的key值, 并打印key值对应的value值
        NSArray *mKeys = [mDic allKeys];
        for (int i = 0; i < [mDic count]; i++) {
            NSLog(@"%@", [mKeys objectAtIndex:i]);
            NSLog(@"%@", [mDic objectForKey:[mKeys objectAtIndex:i]]);
        }
        //for...in
        //1.保证数组中的元素类型必须一致
        //2.快速枚举时, 不能对数组进行修改(增删元素)
        //forin用于数组, 遍历每一个元素
        for (NSString *tempKey in [mDic allKeys]) {
            NSLog(@"%@", tempKey);
            NSLog(@"%@", [mDic objectForKey:tempKey]);
        }
        //forin用于字典, 遍历每一个key值
        for (NSString *somthing in mDic) {
            NSLog(@"%@", somthing);
        }
        //遍历字典value值
        NSArray *mValues = [mDic allValues];
        for (int i = 0; i < [mDic count]; i++) {
            NSLog(@"%@", [mValues objectAtIndex:i]);
        }
        for (id value in [mDic allValues]) {
            NSLog(@"%@", value);
        }
        //数组和字典的嵌套
        NSMutableDictionary *student1 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"杨翔", @"name", [NSNumber numberWithInt:24], @"age", @"男", @"gender", nil];
        NSMutableDictionary *student2 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"李珂", @"name", [NSNumber numberWithInt:23], @"age", @"男", @"gender", nil];
        NSMutableDictionary *student3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"江道洪", @"name", [NSNumber numberWithInt:22], @"age", @"男", @"gender", nil];
        NSMutableArray *studentArray = [[NSMutableArray alloc] initWithCapacity:0];
        [studentArray addObject:student1];
        [studentArray addObject:student2];
        [studentArray addObject:student3];
        NSLog(@"%@", studentArray);
        //做个练习,遍历数组打印学生信息
        for (NSMutableDictionary *stu in studentArray) {
            NSLog(@"%@", [stu objectForKey:@"name"]);
            NSLog(@"%@", [stu objectForKey:@"age"]);
            NSLog(@"%@", [stu objectForKey:@"gender"]);
        }
        for (NSMutableDictionary *stu in studentArray) {
            for (NSString *key in stu) {
                NSLog(@"%@", [stu objectForKey:key]);
            }
        }
        NSMutableArray *nameArray = [[NSMutableArray alloc] initWithObjects:@"张三", @"李四", @"王麻子", nil];
        NSMutableDictionary *girl = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"雪妮儿", @"name", [NSNumber numberWithInteger:18], @"age", @"女", @"gender", nameArray, @"candidate", nil]
        NSLog(@"%@", girl);
        //打印候选人名单
        for (NSString *name in [girl objectForKey:@"candidate"]) {
            NSLog(@"%@", name);
        }
        for (NSString *key in girl) {
            if ([key isEqualToString:@"candidate"]) {
                for (NSString *name in [girl objectForKey:key]) {
                    NSLog(@"%@", name);
                }
            }
}
        //NSArray, NSDictionary, NSSet 都是集合类
3.NSSet, 不可变 集合类
        //(1)元素必须是对象
        //(2)无序
        //(3)元素不能相同
        NSSet *set = [[NSSet alloc] initWithObjects:@"1哈哈", @"2嘿嘿", @"3呼呼", @"4啦啦", @"5啊啊", @"6呀呀", nil];
        NSLog(@"%@", set);
        //元素个数
        NSLog(@"%lu", [set count]);
        //获取某个元素
        NSLog(@"%@", [set anyObject]);
        //获取所有元素
        NSLog(@"%@", [set allObjects]);
        //判断集合中是否包含某个对象
        if ([set containsObject:@"2嘿嘿"]) {
            NSLog(@"包含");
        }
        //子集合
        NSSet *set1 = [[NSSet alloc] initWithObjects:@"1", @"3", @"4", @"5", nil];
        NSSet *set2 = [[NSSet alloc] initWithObjects:@"3", @"4", @"5", nil];
        if ([set2 isSubsetOfSet:set1]) {
            NSLog(@"set2是set1的子集合");
        }
4.NSMUtableSet, 可变集合类, 继承于NSSet
        NSMutableSet *mSet = [[NSMutableSet alloc] initWithCapacity:0];
        //添加元素
        [mSet addObject:@"1"];
        [mSet addObject:@"2"];
        [mSet addObject:@"1"];
        [mSet addObject:@"1"];
        NSLog(@"%@", mSet);
        NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithCapacity:0];
        [mArray1 addObject:@"1"];
        [mArray1 addObject:@"2"];
        [mArray1 addObject:@"1"];
        [mArray1 addObject:@"1"];
        NSLog(@"%@", mArray1);
        //删除元素
        [mSet removeObject:@"1"];
        NSLog(@"%@", mSet);
        //删除所有元素
        [mSet removeAllObjects];
        NSLog(@"%@", mSet);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值