美文网首页
3大数据结构类之——字典

3大数据结构类之——字典

作者: 我開始方了 | 来源:发表于2016-06-08 12:14 被阅读289次

    内容可以是任意的对象指针
    内容是一些键值对 key value
    必须成对出现 一个 key 对应一个 value
    key 是唯一的 不能出现多个相同的 key

       //1.字面量创建不可变字典
        NSDictionary * Dict = @{@"one":@"1",@"two":@"2"};
        NSLog(@"Dict = %@",Dict);
        //2.创建一个不可变字典
        NSDictionary*dict=[[NSDictionary  alloc]initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"4", @"four",@"5",@"five", nil];
        NSLog(@"dict = %@",dict);
        //3.根据已有字典创建一个不可变字典
        NSDictionary * dict1 = [NSDictionary dictionaryWithDictionary:dict];
        NSLog(@"dict1 = %@",dict1);
        //4.用两个分别存放键值的数组创建一个不可变字典
        NSArray * values =[[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil];
        NSArray*keys=[[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
        NSDictionary* dict2 = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
        NSLog(@"dict2 = %@",dict2);
        //键值对的个数
        NSLog(@"keyValuescount = %ld",[dict2 count]);
        //查找 通过 key 找到对应值
        NSLog(@"%@",[dict objectForKey:@"four"]);
        //字典类的存在就是为了解决在大量数据中查找方便,因为它是通过 key 直接找到 value 所以速度很快,避免一个个的遍历寻找造成的效率低下,善用字典类会帮 你的程序提速。
        //字典和数组不一样,数组是有序的,而字典是无序的
        //创建 key 的枚举器
        NSEnumerator * keyenumer = [dict keyEnumerator];
        //此处已知字典
        NSString * obj;
        while (obj = [keyenumer nextObject])
        {
            NSLog(@"obj = %@",obj);
        }
        //快速枚举枚举的是key
        for (id od in dict)
        {
        NSLog(@"od = %@",od);
        }
    

    可变字典 NSMutableDictionary
    NSMutableDictionary 是NSDictionary的子类,所以继承了NSDictionary的方法。

        //创建可变字典
        NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"4", @"four", nil];
        NSLog(@"dict = %@",dict);
        //可变字典特有的方法,增删改
        //字典中不存在@“five”key 那么就是增 加键值对
        [dict setObject:@"5" forKey:@"five"];
        NSLog(@"dict = %@",dict);
        //字典中存在@“one”key 那么就是修改@ “one”对应的值
        [dict setObject:@"7" forKey:@"one"];
        NSLog(@"dict = %@",dict);
        //删除键“one”对应的键值对
        [dict removeObjectForKey:@"one"];
        ~~~
    ------------------------------------
    喜欢的话,帮忙点一下喜欢,谢谢!
    如果有错误之处或者偏差,还请斧正!
    欢迎大家留言提问,技术要交流才能更快成长!

    相关文章

      网友评论

          本文标题:3大数据结构类之——字典

          本文链接:https://www.haomeiwen.com/subject/ovrjdttx.html