#Objective - C - sixth-Day 数组排序及集合遍历
来源:互联网 发布:海岛奇兵21本升级数据 编辑:程序博客网 时间:2024/05/16 09:47
总结
- 遍历:对集合中元素依次取出的过程叫做遍历。
- 原理:通过for循环的循环变量⽤作数组元素下标来获取不同下标的元素。
- 循环次数就是数组元素的个数。
- 数组是有序容器,因此集合中只有数组才能排序。
- 实际使用中可对元素进行升序降序排序方便查阅寻找
- 课题重点:forin循环遍历,缺点不能对指定数量遍历
数组排序
数组排序一些方法
//不可变数组NSArray排序 //排序方法里带Array字样,代表不可变数组排序(需建新数组接收) NSArray *array = @[@"lanou",@"memeda",@"Lol"]; NSArray *newarray = [array sortedArrayUsingSelector:@selector(compare:)]; //SEL类型是方法名 @selector(方法名) NSLog(@"%@",newarray); //可变数组NSMutableArray排序 NSMutableArray *Muarray = [[NSMutableArray alloc]init]; [Muarray addObject:@"wokao"];//添加元素 [Muarray addObject:@"woqu"]; //可变数组的排序直接对原数组进行操作,不需要有返回值,方法名不带Array字样 [Muarray sortedArrayUsingSelector:@selector(compare:)];
较少使用的排序方法(倒序使用起来较为方便)
//sortDescriptor方法 //如果数组里元素直接可以排序,key填@"self"或nil,如果数组里元素为自定义类的对象,key填相对应的属性 //ascending YES升序,NO降序 NSArray *arr = @[@"lanou",@"memeda",@"Lol",@"YEs"]; NSSortDescriptor *sortDes = [[NSSortDescriptor alloc]initWithKey:nil ascending:NO];//使用了倒序输出 NSArray *resultArray = [arr sortedArrayUsingDescriptors:@[sortDes]];//获取排序后的元素放进数组 for (NSString *str in resultArray) {//创建字符串遍历数组获取元素 NSLog(@"%@",str); }
自定义的排序方法(实现系统的Compare)
创建类Peison
//Person.h文件代码@property(nonatomic,copy)NSString *name;//属性创建@property(nonatomic,copy)NSString *job;-(NSComparisonResult)compareWithName:(Person *)name;//创建类方法
//Person.m文件//自定义排序方法-(NSComparisonResult)compareWithName:(Person *)person{ return [self.name compare: person.name];//返回比较值}
实现代码
Person *per = [[Person alloc]init]; per.name =@"lixia"; per.job = @"213";//进行赋值 Person *per1 = [[Person alloc]init]; per1.name = @"zhongh"; per1.job = @"dog";//第二个人赋值 NSArray *pers = @[per,per1];//将两人信息放入数组 NSArray *newpers = [pers sortedArrayUsingSelector:@selector(compareWithName:)]; //sortedArrayUsingSelector比较
集合遍历
枚举器NSEnumerator��遍历(自上而下)
//枚举器 NSArray *array = @[@"a",@"b",@"c",@"d"]; NSEnumerator *enumrator = [array objectEnumerator];//正序 NSEnumerator *reverse = [array reverseObjectEnumerator];//逆序 id value = nil;//存储数组中的元素 while ((value = [enumrator nextObject])) { //遍历获取下一个元素 NSLog(@"%@",value);//输出正序遍历的元素 } while ((value = [reverse nextObject])) { NSLog(@"aha:%@",value); }
集合的遍历
NSSet *set = [NSSet setWithObjects:@"a",@"b",@"c", nil];//创建集合 NSArray *object = [set allObjects];//获取所有元素 for (int i = 0; i < [object count]; i++) { NSString *value = [object objectAtIndex:i]; NSLog(@"%@",value); }
快速遍历
//forin方法(重点) NSString *new = [[NSString alloc]init]; for (NSString *str in array) {//从上至下逐个遍历且赋值 new = [new stringByAppendingString:str]; }NSLog(@"%@",new);
字典遍历
NSDictionary *dic = @{@"姓名":@"momo",@"性别":@"man",@"年龄":@"18"}; for (NSString *key in dic) { NSString *value = [dic objectForKey:key];//通过key获取值 NSLog(@"%@",value); }
一些数组与字典相互嵌入的小练习
//字典->数组 NSArray *arr1 = @[@"meme",@"dada",@"youyou"]; NSDictionary *dic1 = @{@"name":arr1}; NSLog(@"%@",dic1); //数组->字典 NSDictionary *dict1 = @{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3",@"key4":@"value4"}; NSDictionary *dict2 = @{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3",@"key4":@"value4"}; NSArray *arr2 = @[dict1,dict2]; NSLog(@"%@",arr2); //数组->字典->字典 NSDictionary *dic3 = @{@"章节":@"页数"}; NSDictionary *dic4 = @{@"书名":dic3}; NSArray *arr3 = @[dic4]; NSLog(@"%@",arr3); //数组->字典->数组 NSArray *arr4 = @[@"watcher",@"walker",@"celtic"]; NSArray *arr5 = @[@"d",@"c",@"b",@"a"]; NSArray *arr7 = @[@"laker",@"heat"]; NSDictionary *dic5 = @{@"dictionary":arr4,@"letter":arr5,@"NBAteam":arr7}; NSArray *arr6 = @[dic5]; NSLog(@"%@",arr6);
冬至小年快乐
南方有个说法叫做冬至大年
虽然我是没有感觉出来,不过也许是因为比起新年更容易的团员聚在一起才显得传统的更重要吧
0 0
- #Objective - C - sixth-Day 数组排序及集合遍历
- #Objective - C - sixth-Day OC小练习 省市区排序
- #Objective - C - Fifth-Day 三大容器(数组、字典、集合)常用语法归纳总结
- iOS Objective-C 数组遍历的性能及原理
- 集合遍历和数组排序
- Objective-c:集合类型遍历方法详解
- Objective-C----Block 、数组排序
- Objective-C:数组排序、过滤
- Objective C之数组排序
- Objective-C中遍历字典、数组和集合的几种常见方式
- Objective-C_字典、集合、数组排序
- Objective C中的字符串及集合
- Objective-C----快速枚举、数组排序
- Objective-C学习-数组排序问题
- #Objective-C 经典字典数组排序 - 省市区
- #Objective-C 经典字典数组排序 - 省市区
- 《黑马程序员》The sixth day
- Objective-C集合遍历的几种方式
- 通过CuteFTP用VBScript使用SFTP,实现Win与Linux的文件传输
- 了解Spring 构造注入和自动注入
- C# string.split 分割字符串
- launch文件remap标签
- 数学建模常用算法
- #Objective - C - sixth-Day 数组排序及集合遍历
- 深度估计软件DERS5.1软件与配置运行详细步骤
- IOS持久化之NSKeyedArchiver,NSKeyedUnarchiver
- 1223第三十五节
- CALayer简单应用——带阴影的icon
- listview中如何通过selector改变点击时的背景色
- Java Day2
- 05.(java基础)-02final,finally,finalize的区别
- AFNetWorking使用总结(待总结。。。)