字典,集合,数组排序

字典:

字典用于保存具有映射关系key-value数据的集合

一个key-value对 认为一条目,字典是存储 key-value对 的容器

对于name:张三来说 name就是key  张三就是key对应的value

字典特点:

1.与数组不同,字典靠key存取元素(数组是通过下标存取元素)

2.key不能重复,value必须是对象(如果不是对象用NSNumber,NSValue)

3.键值对在字典中时无序存储的

4.分为:可变字典(NSMutableDictionary)和不可变字典(NSDictionary)

5.不可变字典,字典一旦创建,键值对就不能更改,不可添加,也不可以删除,仅能读取key或者value

6.字典中键值是成对出现的,不能出现但数个元素个数

NSDictionary *dic = [[NSDictionaryalloc]initWithObjectsAndKeys:@"Dog",@"animal1",@"Cat",@"animal2",@"Rabbit",@"animal3",

@"Monkey",@"animal4",@"Bird",@"animal5",nil];

        //获取所有key值,所有value

        //获取字典元素个数

       NSUInteger count = dic.count;

       NSLog(@"%lu",count);

        //获取所有key值和value

       NSArray *array = dic.allKeys;

       for (int i = 0; i < array.count; i++) {

           NSLog(@"array[%d] = %@",i,[arrayobjectAtIndex:i]);

        }

        //获取value

        NSArray *array1 = dic.allValues;

       for (int i = 0; i < array1.count; i++) {

           NSLog(@"array1[%d] = %@",i,[array1objectAtIndex:i]);

        }

        //通过key值查找value

       NSString *animal1 = [dic valueForKey:@"animal1"];

       NSLog(@"%@",animal1);


创建一个班级字典,里面包含各个小组,每个小组又包含这组所有成员的名字

//先创建小组数组

NSMutableArray *group1 = [[NSMutableArrayalloc] initWithObjects:@"小敏",@"王雪娟",@"郭飞飞",@"秦俊珍",nil];

NSMutableArray *group2 = [[NSMutableArrayalloc] initWithObjects:@"范芳芳",@"刘海燕",@"张衡",@"李书明",nil];

NSMutableArray *group3 = [[NSMutableArrayalloc] initWithObjects:@"佳慧",@"张鹏飞",@"乔自朋",@"李志鹏" ,nil];

NSMutableArray *group4 =[[NSMutableArrayalloc] initWithObjects:@"韩苇棋",@"练晓俊",@"郭亚茹",@"马娟娟" ,nil];

NSMutableDictionary *class = [[NSMutableDictionaryalloc] init];//创建可变字典,把各小组添加到字典中

        [class setValue:group1 forKey:@"第一组"];

        [class setValue:group2 forKey:@"第二组"];

        [class setValue:group3 forKey:@"第三组"];

        [class setValue:group4 forKey:@"第四组"];

        NSArray *class1 = [class allKeys];

        for (int i = 0; i < class1.count; i++) {

            //通过key值取出字典里对应的value(各小组数据)

            NSArray *groupArray = [class valueForKey:class1[i]];

            for (int j = 0; j < groupArray.count; j++) {

                //通过下标访问数组里面的每一个元素

                if (j < groupArray.count) {//防止数组越界访问

                    NSLog(@"%@ %@", class1[i],groupArray[j]);

                }

            }

        }


生气 生气需要注意setValue:forKey的一个用法:当字典中没有key的时候, setValue:forKey在这里是添加新的键值对;
当字典中有key时,setValue:forKey就是修改当前key下边对应的value值

[dictionary1setValue:@"Chicken"forKey:@"animal3"];//修改key@“animal3”对应的值,将其改为@“Chicken”



集合(NSSet)

iOS中也有表示数学中集合的类,叫做NSSet

特点:

1.与数学中的集合一样,集合中元素是唯一的(不能重复)

2.集合中元素无序存储

3.集合中元素必须是对象类型(如果是基本数据类型需要通过NSNumber,NSValue转化为对象类型)

4.iOS中集合分为两类:NSSet和NSMutableSet


快速枚举

//数组快速枚举

       NSArray *quickArray = [NSArrayarrayWithObjects:@"小王子",@"龙猫",@"千与千寻",nil];

       //in右边是集合名,左边是集合中元素的类型

       for (NSString *strin quickArray) {

           NSLog(@"str = %@",str);

        }







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值