黑马程序员--集合

 -----------android培训、java培训、java学习型技术博客、期待与您交流!------------

  -----------并不是生来就是大神、代码量决定一切、其他都是假象、大家都不是傻子对吧?----------- 

*************NSArray 排序是有顺序的*********************

 NSArray 不可变oc数组

 问:为什么要学习oc数组 ?

 答:因为他比c语言数组强大 他可以放多种类型的对象,可以将文件内容转换成数组来进行分割或者显示

 如何创建数组? oc数组时不能放nil 因为他的结束就是nil

  注意 总结出来创建方法 NSString stringWithFmat: 类创建方法一般都是用类名开始的 其他类以此类推 

 

 //NSArray 创建方式

 NSArray *array = [NSArray arrayWithObjects:@"jack",@"rose", nil];

 //读取数组的个数

 NSLog(@"%ld",array.count);

 //打印第一个位置的数组元素

 NSLog(@"%@",array[0]);

 //快速创建数组

 NSArray *array2 = @[@"jack",@"hei",@"hei"];

 NSLog(@"%@",array2[2]);

 //如何遍历数组里的每个对象

 int count = 0;

 //遍历数组的每个对象

 for(id obj in array2)

 {

 count++;

 }

 NSLog(@"%d",count);

 //直接打印数组他会打印出所有数组中的元素

 NSLog(@"%@",array2);

 -----------------------------------------------------------------------------------------

 

 NSMutableArray 可变数组

 //创建一个可变数组

 NSMutableArray *array = [NSMutableArray  arrayWithObjects:@"hack",@"rose", nil];

 //增加对象

 [array addObject:@"123"];

 //删除制定对象

 [array removeObject:@"123"];

 //删除制定位置的对象

 [array removeObjectAtIndex:2];

 -----------------------------------------------------------------------------------------


 NSMutableSet *set = [NSMutalbeSet setWithObject:@"jack",@"rose",nil]; 无序


 //增加元素方法

 [set addObject:@"lucy"];

 //删除元素只能删除指定元素名称 不能删除指定位置 因为他时无序的

 [set removeobject:@"rose"];

 ----------------------------

 // 不可变数组不能使用快速创建

 NSMutableArray *array = @[@"ack",@"rose"];

 ----------------------------

 -----------------------------------------------------------------------------------------

总结:NSSet NSArray 比较

 1>共同点

 *都是集合,都能存放oc对象

 *只能存放oc对象,不能存放非oc对象类型(基本数据类型:int,char,float等,结构体,枚举)

 *本身都是不可变的,都有一个可变的子类

 

 2>不同点

 *NSArray 数组元素是有序的

 *NSSet 是无序的 

 NSMutalbeSet 获取方法为

 [set anyObject] 获取随机元素 返回NSString类型

 NSString *str = [set anyObject];


------------------------------------------------------------------------------------------------

 NSDictionary不可变 字典 排列没有顺序的 唯一key 不能有2个相同的key 如何出现后面写的将会覆盖之前写的 

 如果出现多个key 后面设置的会覆盖之前设置的

 字典

  问:问什么要学习NSDictionary ?

  答:他很方便啦 例如讲 一个人的姓名 年龄 qq号 电话  性别 等等  完全可以利用字典来存储 然后放入NSArray中 

搞成一个档案数据库 生活中也有很多例子 例如 在取款机 查询自己余额:他就会立刻显示你有多少钱 

例如你查美女的电话号码 输入美女名字 立刻就会出来她的电话 等等 看你自己理解了

这里你要美女的号码 就代表key(索引)  而显示出来的号码入138138就表示value (内容) 

他们是配对存在的 称为键值对  格式 一个key(唯一的) 独影一个value 

 

 key  ---> value 称为键值对

 索引 ---> 文件内容

 根据索引(key)就能找到对应的内容(value)

 创建方法

 //第一种方法

 NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack",@"name"];

 //第二种方法

 NSDictionary *dict = [NSDictionary dictionarywithObject:@"jack,@"name",@"rose",@"name2",nil];

 //快捷创建方法只能用在NSDictionary 

 //格式 @{@"key" : @"value", @"key" : @"value"};返回NSDictionary类型 必要用在NSMutableDictionary

 NSdictionary *dict = @{@"name" : @"jack", @"name2" : @"lucy"};

 //获取方法 他返回的是id类型

 id obj = [dict ObjectForKey:@"name"];

 //获取方法2

 id obj = dict[@"name"];

 ----------------------------------------------------------------------------------------------

 NSMutableDictionary 可变字典 无序

 //创建字典方法

 NSMutableDictionary  *d = [NSMutableDictionary dictionaryWithObject:@"jack" forKey:@"name"];

 

 

 //增减一个键值对

 [d setObject:@"hehe" forKey:@"name2"];

 //删除指定key的键值对

 [d removeObjectForKey:@"name"];

 //获取键值

 id obj = d[@"name"];

 

 

 NSLog(@"%@,%ld",obj,d.count);

 

 //创建字典方法

 NSMutableDictionary  *d = [NSMutableDictionary dictionaryWithObject:@"jack" forKey:@"name"];

 //增加键值对

 [d setObject:@"rose" forKey:@"name2"];

 [d setObject:@"lucy" forKey:@"name3"];

 //遍历之前 先把key 传给数组 然后在 然后通过数组

 //数组是有序的 通过数组遍历得到key[i] 然后在读取key[i]得到value

 //所以说NSArrayDictionary是一个很好的组合

 NSArray *key = [d allKeys];

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

 {

 NSLog(@"%@==%@",key[i],d[key[i]]);

 }

 //当然直接打印 dictionary 也是可以现实全部内容的

 

  NSLog(@"%@",d);

 -----------------------------------------------------

 快速遍历方法 无序

 NSDictionary *dict = @{@"name" : @"jakc", @"name2" : @"rose", @"name3" : @"lucy"};

 //快速遍历方法 无序

 [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

 //打印key value

 NSLog(@"%@--%@",key,obj);

 //停止遍历

 //*stop = YES;

 }];

 

 集合总结:

 1.NSArray\NSMutalbeArray 数组 有序

 *有序

 *快速创建: @[];  mutalbearray没有快速

 *快速读取方法:array[i];

 2.NSSet\NSMutalbeSet 数组 

 *无序

 3.NSDictionary\NSMutalbeDictionary字典 键值对 通过key 找到value

 *无序

 *快速创建(不可变): @{key : value, key2 : value};

 *快速读取:字典名[key];

 

 练习:

 //创建一个有4个对象的数组

 

 NSArray *person =  @[

 @{@"name1" : @"jack1" , @"qq1" : @"9821"},

 @{@"name2" : @"jack2" , @"qq2" : @"9822"},

 @{@"name3" : @"jack3" , @"qq3" : @"9823"},

 @{@"name4" : @"jack4" , @"qq4" : @"9824"}

 ];

 //用数组person 得到第二个字典 2]

 NSDictionary * j = person[1];

 //打印对象的所有属性

 NSLog(@"%@",j);

 //利用字典对象读取key 调用value

 NSLog(@"%@",j[@"qq2"]);

 // 先利用 person[1]对应的指点 然后在用字典取出key对应的数据

 NSLog(@"%@",person[1][@"qq2"]);





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值