#Objective - C - sixth-Day 数组排序及集合遍历
2015-12-22 20:03
543 查看
总结
遍历:对集合中元素依次取出的过程叫做遍历。原理:通过for循环的循环变量⽤作数组元素下标来获取不同下标的元素。
循环次数就是数组元素的个数。
数组是有序容器,因此集合中只有数组才能排序。
实际使用中可对元素进行升序降序排序方便查阅寻找
课题重点:forin循环遍历,缺点不能对指定数量遍历
数组排序
数组排序一些方法
[code] //不可变数组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:)];
较少使用的排序方法(倒序使用起来较为方便)
[code] //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[code]//Person.h文件代码 @property(nonatomic,copy)NSString *name;//属性创建 @property(nonatomic,copy)NSString *job; -(NSComparisonResult)compareWithName:(Person *)name;//创建类方法
[code]//Person.m文件 //自定义排序方法 -(NSComparisonResult)compareWithName:(Person *)person{ return [self.name compare: person.name];//返回比较值 }
实现代码
[code] 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��遍历(自上而下)[code] //枚举器 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); }
集合的遍历
[code] 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); }
快速遍历
[code] //forin方法(重点) NSString *new = [[NSString alloc]init]; for (NSString *str in array) {//从上至下逐个遍历且赋值 new = [new stringByAppendingString:str]; }NSLog(@"%@",new);
字典遍历
[code] NSDictionary *dic = @{@"姓名":@"momo",@"性别":@"man",@"年龄":@"18"}; for (NSString *key in dic) { NSString *value = [dic objectForKey:key];//通过key获取值 NSLog(@"%@",value); }
一些数组与字典相互嵌入的小练习
[code] //字典->数组 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);
冬至小年快乐
南方有个说法叫做冬至大年
虽然我是没有感觉出来,不过也许是因为比起新年更容易的团员聚在一起才显得传统的更重要吧
相关文章推荐
- Objective-C:Foundation框架-结构体
- Objective--C UI UITableView编辑
- GridView绑定后翻页问题解决(PageIndexChanging(object sender, GridViewPageEventArgs e))
- Objective-C中的Method Swizzling
- js打印object信息
- SQL Server OBJECT_ID() 函数
- 自己做得json测试类,包含JSONArray,JSONObject,Gson基本使用方法
- Objective-C:Foundation框架-概述
- Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作
- Objective-C 工厂方法
- Object_C 中的通知 iOS
- Objective-C中单例模式的实现
- Objective-C HelloWorld
- NSDictionary之objectForKey 和 valueForKey 的不同
- Objective-C 关键字:retain, assgin, copy, readonly,atomic,nonatomic
- 用NSCoding协议完成“编码/解码”操作-Object-C
- 独立开发者的自白:Objective-C最糟糕的13件事
- Objective-c语言_委托模式
- Objective-C对象之类对象和元类对象
- Objective-c语言_单例模式