美文网首页初见
OC--数组 字典 集合

OC--数组 字典 集合

作者: 有个张狼叫小强 | 来源:发表于2016-10-25 20:01 被阅读104次

    数组 字典 集合的区别

    相同点:都是OC中的容器,可以储存多个元素,每一个元素必须是对象,对象的类型不限
    不同点:

    1.使用场景:
    数组:用来管理一组有序的元素
    字典:管理一组具有--对应关系的集合
    集合:用来管理一组无序的并且具有互异性的集合
    2.取值方式
    数组:根据索引去取值
    字典:根据key值去获取value值
    集合:anyobject是随机取值

    字典中储存数据必须要是 key-Value成对存在,并且key是一个唯一的值, 一个key只能对应一个Value。但是,一个Value可以对应多个key,一个key Value组成字典中的一个元素,字典是无序的。

    一、字典

    1.创建对象
    1.1使用初始化方法
    //Value值xiaochen  key值xc
    NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaochen",@"xc",@"xiaoyun",@"xy",@"xiaohong",@"xh",nil];
    
    1.2遍历构造器的方式
    //Value值xiaochen  key值xc
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaochen",@"xc",@"xiaoyun",@"xy",@"xiaohong",@"xh",nil];
    
    1.3字面量
    //字面量key值在前 value在后
    NSDictionary *dicts = @{@"name":@"xiaochen",@"gender":@"man",@"age":@"19"};
    
    2.如何获取字典的长度
        NSUInteger i = dicts.count;
        NSLog(@"%lu",i);//3
    
    3.根据Key值获取value值
        //value 只要是对象就可以,但是key必须要遵从NSCoying协议,字符串默认是遵从的
        NSString *str = [dicts objectForKey:@"name"];
        NSLog(@"name = %@",str);   // name = xiaochen
    
        NSString *str1 = [dicts objectForKey:@"gender"];
        NSLog(@"gender = %@",str1);  //gender = man
    
        NSString *str2 = [dicts objectForKey:@"age"];
        NSLog(@"age = %@",str2);   //age = 19
    
    4.获取所有的Key值和所有的value值
        NSArray *arr = [dicts allKeys];  //获取所有的Key值
        NSLog(@"%@",arr);
        /*(
         name,
         age,
         gender
         )*/
        NSArray *ar =[dicts allValues];//获取所有的value值
        NSLog(@"%@",ar);
        /*(
         xiaochen,
         19,
         man
         )*/
    

    二、可变字典

    1.创建对象
    1.1初始化方法
        NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];
    
    1. 2遍历构造器
        NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:10];
    
    1.3字面量
        NSMutableDictionary *dicts = [@{@"key1":@"value1",@"key2":@"value2"}mutableCopy];
     /*dicts = {
        key1 = value1;
        key2 = value2;
        }
        */
    
    2.添加元素
        [dicts setObject:@"value3"forKey:@"key3"];
        NSLog(@"%@",dicts);
        /*{
         key1 = value1;
         key2 = value2;
         key3 = value3;
         }*/
    
    3.修改value值
    原理:先查找字典中有没有对应的key值,如果有,则修改key对应的value,如果没有直接添加
        [dicts setObject:@"value10"forKey:@"key1"];
        NSLog(@"%@",dicts);
       /* {
            key1 = value10;
            key2 = value2;
            key3 = value3;
        }*/
    
    4.删除
        [dicts removeObjectForKey:@"key1"];
        NSLog(@"%@",dicts);
        /* {
         key2 = value2;
         key3 = value3;
         }*/
    

    集合

    集合 -- 特点:无序的 有互异性
    1.1初始化方法
        NSSet *set1 =[[NSSet alloc]initWithObjects:@"dic",@"bb",@"cc",@"aa",@"bb",@"cc",nil];
        NSLog(@"%@",set1);
        /*{(
         cc,
         aa,
         bb
         )}*/
    
    1.2遍历构造器
        NSSet *set2 =[NSSet setWithObjects:@"aa",@"bb",@"cc",@"dd",@"se",nil];
        NSLog(@"4%@",set2);
        /*4{(
         cc,
         dd,
         aa,
         se,
         bb)}*/
    
    2.1获取集合中的元素
     NSString *str= [set2 anyObject];//随机获取元素
     NSLog(@"%@",str);
        /* {(
         cc,
         dd,
         aa,
         se,
         bb
         )}*/
    
    3可变集合
    3.1初始化方法
    NSMutableSet *set = [[NSMutableSet alloc] initWithCapacity:10];
    
    3.2.添加元素
        [set addObject:@"dic"];
        [set addObject:@"dd"];
        [set addObject:@"ff"];
        NSLog(@"%@",set);
        /*{(
         dd,
         ff
         )}*/
    
    3、3删除集合元素
     [set removeObject:@"ff"];
        NSLog(@"%@",set);
        /*{(
         dd
         )}*/

    相关文章

      网友评论

        本文标题:OC--数组 字典 集合

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