初见

OC--数组 字典 集合

2016-10-25  本文已影响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
     )}*/
上一篇 下一篇

猜你喜欢

热点阅读