成长之路-OC第五天 三大容器(数组,字典,集合)
2015-12-21 21:28
176 查看
[code]// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| |// `. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. / // ___`. .' /--.--\ `. . __ // ."" '< `.___\_<|>_/___.' >'"". // | | : `- \`.;`\ _ /`;.`/ - ` : | | // \ \ `-. \_ __\ /__ _/ .-` / / // ======`-.____`-.___\_____/___.-`____.-'====== // `=---=' // // ............................................. // 佛祖保佑 永无BUG -------------
NSArray的初始化方法
[code]//NSArray的初始化方法 NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; //便利构造器 NSArray *arr1 = [NSArray arrayWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; //字面量 NSArray *arr2 = @[@"如花",@"石榴姐姐",@"凤姐"];
获取数组内数据个数
[code] NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; NSLog(@"%ld",[arr count]); //3
访问数据
[code]NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; //访问数据 NSLog(@"%@",[arr objectAtIndex:1]); //吴彦祖 //字面量 NSLog(@"%@",arr[1]);
数组插入数据和插入数组
[code]NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; //数组插入数据 NSLog(@"%@",[arr arrayByAddingObject:@"曾志伟"]); //数组插入数组 NSLog(@"%@",[arr arrayByAddingObjectsFromArray:arr2]);
判断数组中是否包含某一个给定的对象
[code]NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; if ([arr containsObject:@"刘德华"]) { NSLog(@"有"); //有 }
获取数组元素对应的索引
[code]NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil]; //获取数组元素对应的索引 NSLog(@"%ld",[arr indexOfObject:@"吴彦祖"]); //获取数组最后一个元素 NSLog(@"%@",[arr lastObject]);
数组内的数据以自定字符连接
[code]//数组内的数据以自定字符连接 NSString *str = [arr componentsJoinedByString:@","]; NSLog(@"%@",str);
按照给定的字符串进行截取,将截取的多段字符串放入数组中
[code]NSString *string = @"www.baidu.com"; NSArray *arr = [string componentsSeparatedByString:@","]; NSLog(@"%@",arr);
小练习
截取下面网址的图片地址 然后用字符串拼接起来
[code]NSString *str = @"http://www.aldhf.com/huasf.jpg&http://www.sghalg.cpm/as/asfj.jpg&http://www.sgladf.com/asf.jpg"; NSArray *arr = [str componentsSeparatedByString:@"&"]; NSLog(@"%@",arr); NSString *str2 = @""; for (int i =0; i < [arr count]; i++) { str2 = [str2 stringByAppendingString:arr[i]]; } NSLog(@"%@",str3);
可变数组NSMutableArray
NSMuta����ableA����a��rray是OC中的可变数组,NSM����utableA����arr��ay的父类是NSArray, 具有NSArray所有的方法,同时在NSA����a��rray的基础上添加了对⾃自⾝身对象增删改的操作。初始化方法
[code]//初始化方法 NSMutableArray *murray = [[NSMutableArray alloc] initWithObjects:@"marry",@"mark",@"dive", nil]; //便利构造器 NSMutableArray *murray1 = [NSMutableArray arrayWithCapacity:0];
可变数组的添加
[code]//数组中添加一个对象 [murray addObject:@"timo"]; NSLog(@"%@",murray);
可变数组的插入
[code]//数组中指定位置插入一个对象 [murray insertObject:@"hehe" atIndex:1]; NSLog(@"%@",murray);
可变数组的移除
[code]//从数组中移除一个对象 [murray removeObject:@"timo"]; NSLog(@"%@",murray); //移除数组中最后的对象 [murray removeLastObject]; NSLog(@"%@",murray); //移除数组中所有的元素 [murray removeAllObjects]; NSLog(@"%@",murray); //数组中移除指定位置的元素 [murray removeObjectAtIndex:2]; NSLog(@"%@",murray);
可变数组的替换和交换
[code] //使用指定的对象替换指定位置的对象 [murray replaceObjectAtIndex:1 withObject:@"demaxiya"]; NSLog(@"%@",murray); //交换指定的两个下标对应的对象 [murray exchangeObjectAtIndex:0 withObjectAtIndex:2]; NSLog(@"%@",murray);
小练习
[code]//用上面的替换做冒泡排序 NSMutableArray *muarry = [NSMutableArray array]; for (int i = 0; i < 10; i++) { NSNumber * num = [NSNumber numberWithInt:arc4random() %100]; [muarry addObject:num]; } for (int i = 0; i < [muarry count] - 1; i++) { for (int j = 0; j < [muarry count] - 1 -i; j++) { if ([[muarry objectAtIndex:j] intValue] > [[muarry objectAtIndex:(j + 1 )] intValue]) { [muarry exchangeObjectAtIndex:j withObjectAtIndex:j + 1]; } } } NSLog(@"%@",muarry);
字典NSDictionary
字典是一个⽆无序的集合,⽤用来存储具有一一对应关系的数 据。 字典中存储的每一个对象都是一对键值对,键值对包含两 个部分key��和��al��e,ke��与��al��e的值都是对象类型。特点:与数组不同,字典靠ke��存取元素。
ke��与��al��e必须都是对象类型。
字典中键值对的存储是无序的。
字典分为两种类型不可变字典(NSDic��iona����),可变字典 (NSM����ableDic��iona����)。
初始化
[code]//初始化 value - key NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil]; //便利构造器 NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil]; //字面量key - value NSDictionary *dic2 = @{@"name1":@"zhaoxin",@"name2":@"nuoshou",@"jianshen":@"name3"};
获取相应的值
[code] //获取所有的key NSArray *keyArray = [dic allKeys]; NSLog(@"%@",keyArray); //获取所有的value NSArray *valueArray = [dic allValues]; NSLog(@"%@",valueArray); //字典只能通过key取值 NSLog(@"%@",[dic objectForKey:@"name1"]);
小练习
[code]//小练习 按 [key]:[value]格式输出 NSDictionary *testDic = [NSDictionary dictionaryWithObjectsAndKeys:@"盖伦",@"德玛西亚之力",@"嘉文",@"德玛西亚皇子",@"赵信",@"德邦总管",@"拉克丝",@"光辉女郎",@"薇恩",@"暗夜猎手",@"奎因",@"德玛西亚之翼",@"泰隆",@"刀锋之影",@"德莱文",@"荣耀行刑官",@"德莱厄斯",@"诺克萨斯之手",@"卡特琳娜",@"不祥之刃",@"凯南",@"狂暴之心",@"提莫",@"迅捷斥候",@"兰博",@"机械公敌",@"塔姆",@"河流之王",@"乐芙兰",@"诡术妖姬",@"莫甘娜",@"堕落天使",@"亚索",@"疾风之刃", nil]; NSArray *KeyArr = [testDic allKeys]; //获取key的值 //NSArray *ValueArr = [testDic allValues]; for (int i = 0; i < [KeyArr count]; i++) { // NSString * key = [KeyArr objectAtIndex:i]; //输出第i个key // NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i ],[testDic objectForKey:Key]); //按照输出的key值找value NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i],[testDic objectForKey:[KeyArr objectAtIndex:i]]); }
可变字典
继承了不可变字典的所有方法 同时 在其基础上添加了 “增加”,“修改”,“删除”的操作。初始化方法
[code]//初始化方法 NSMutableDictionary *mudic = [[NSMutableDictionary alloc] initWithCapacity:10]; //便利构造器 NSMutableDictionary *mudic1 = [NSMutableDictionary dictionaryWithCapacity:10]; //字面量 NSMutableDictionary *name = [@{@"key1":@"frank", @"key2":@"duck"} mutableCopy];
字典中添加新的键值对以及 修改某一对键值
[code]//字典中添加新的键值对以及 修改某一对键值 [mudic setObject:@"demaxiya" forKey:@"name1"]; [mudic setObject:@"hangbin" forKey:@"name2"]; NSLog(@"%@",mudic);
移除字典的值
[code]//移除指定的键对应的键值对 [mudic removeObjectForKey:@"name1"]; NSLog(@"%@",mudic); //移除字典中所有的键值对 [mudic removeAllObjects];
集合NSSet
集合两大特性 排异性 无序性 哈希算法 集合优点 效率特别高初始化方法
[code] //初始化方法 NSSet *ns = [[NSSet alloc] initWithObjects:@"faker",@"banji",@"mrain", nil]; //便利构造器 NSSet *ns2 = [NSSet setWithObjects:@"faker",@"banji",@"mrain", nil];
集合的取值
[code]//获取集合中对象的个数 NSLog(@"%ld",[ns count]); //获取集合中所有的对象 NSLog(@"%@",[ns allObjects]); //从集合中取出一个对象 NSLog(@"%@",[ns anyObject]);
NSMutableSet 可变集合
初始化方法[code]//初始化方法 NSMutableSet *name = [[NSMutableSet alloc] initWithCapacity:0]; //便利构造器 NSMutableSet *name1 = [NSMutableSet setWithCapacity:0];
添加删除
[code]//添加一个对象 [name addObject:@"bang"]; NSLog(@"%@",name); //移除一个对象 [name removeObject:@"bang"]; //移除所有对象 [name removeAllObjects];
总结
总结OC中为我们提供了三⼤大容器,数组,字典和集合,三个 容器中存储的都是对象类型。
数组:是一个有序的集合,当我们需要管理有序的一组对 象的时候需要使⽤用数组。
集合:集合是⼀个⽆无序的容器,并且容器中的对象不能够 重复。
在自己选择的路是坚定的走下去!!!!!!!!!!
相关文章推荐
- Centos下MySQL使用总结
- Anaconda 导入模块报错 No module named version
- Innodb的内存结构
- iOS --- Swift中泛型(Generic)的基本使用
- 瞎扯·学期总结哔~
- 深度学习的机器配置
- AR/VR是否会再一次全行业集体踏空(超长文+昆仲研究报告)
- 机器学习相关
- VS-Warning&Error处理
- Longest Palindromic Substring 最长回文
- 数据结构基础(二)栈和队列
- quick-cocos2d-x游戏开发【4】——加入文本
- iOS集成丁香园DXY OAuth 登陆 swift代码示例
- 09 DirectoryStructure
- createQuery is not valid without active transaction
- 最小生成树
- 联想从海外收购得到了什么
- C++冗杂易忘基础知识整合
- c语言
- Vistual Studio XML 智能提示