对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
来源:互联网 发布:matlab合并三个矩阵 编辑:程序博客网 时间:2024/04/29 17:01
//// Person.h// LessonSort//// Created by lanouhn on 14-8-9.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject { NSString *_name;//姓名 NSInteger _age;//年龄 CGFloat _height;//身高}//_name//setter- (void)setName:(NSString *)name;//getter- (NSString *)name;//_age//setter- (void)setAge:(NSInteger)age;//getter- (NSInteger)age;//_hight//setter- (void)setHeitht:(CGFloat)height;//getter- (CGFloat)height;//重写description方法- (NSString *)description;//customize init method- (id)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height;//compare- (NSComparisonResult)compareByAge:(Person *)anPerson;- (NSComparisonResult)compareByHeight:(Person *)anPerson;- (NSComparisonResult)compareByName:(Person *)anPerson;//按姓名降序- (NSComparisonResult)compareByNameDescending:(Person *)anPerson;@end//// Person.m// LessonSort//// Created by lanouhn on 14-8-9.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.//#import "Person.h"@implementation Person#pragma mark - setter and getter//_name//setter- (void)setName:(NSString *)name { _name = name;}//getter- (NSString *)name { return _name;}//_age//setter- (void)setAge:(NSInteger)age { _age = age;}//getter- (NSInteger)age { return _age;}//_hight//setter- (void)setHeitht:(CGFloat)height { _height = height;}//getter- (CGFloat)height { return _height;}#pragma mark - override method//重写description方法- (NSString *)description{ return [NSString stringWithFormat:@"name:%@, age:%ld, height:%g", _name, _age, _height];}#pragma mark - init method- (id)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height { self = [super init]; if (self) { _name = name; _age = age; _height = height; } return self;}#pragma mark - compare method//compare//#warning 明天复习已经完成- (NSComparisonResult)compareByAge:(Person *)anPerson { if ([self age] > [anPerson age]) { return NSOrderedDescending;//1 } else if ([self age] == [anPerson age]) { return NSOrderedSame;//0 } else { return NSOrderedAscending;//-1 }}- (NSComparisonResult)compareByHeight:(Person *)anPerson { if ([self height] > [anPerson height]) { return NSOrderedDescending;//1 } else if ([self height] == [anPerson height]) { return NSOrderedSame;//0 } else { return NSOrderedAscending;//-1 }}- (NSComparisonResult)compareByName:(Person *)anPerson { return [[self name] compare: [anPerson name]];}//按姓名降序- (NSComparisonResult)compareByNameDescending:(Person *)anPerson { return -[[self name] compare: [anPerson name]];}@end//// main.m// LessonSort//// Created by lanouhn on 14-8-9.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.//#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *wangYi = [[Person alloc] initWithName:@"wangYi" age:18 height:177.4]; Person *songEr = [[Person alloc] initWithName:@"songEr" age:19 height:180.41]; Person *zhangSan = [[Person alloc] initWithName:@"zhangSan" age:21 height:192]; Person *liSi = [[Person alloc] initWithName:@"liSi" age:22 height:177]; NSArray *arr = [[NSArray alloc] initWithObjects:wangYi, songEr, zhangSan, liSi, nil]; //对数组按中的对象按姓名按升序排序 NSArray *sortArrName = [arr sortedArrayUsingSelector:@selector(compareByName:)]; //可以直接打印,以数组的形式打印出来 NSLog(@"sortArrName %@", sortArrName); //通过遍历打印出来, 打印出多条语句 for (Person *per in sortArrName) { NSLog(@"%@", per); } //对数组按中的对象按年龄按升序排序 NSArray *sortArrAge = [arr sortedArrayUsingSelector:@selector(compareByAge:)]; NSLog(@"sortArrAge %@", sortArrAge); //对数组按中的对象按升高按升序排序 NSArray *sortArrHeight = [arr sortedArrayUsingSelector:@selector(compareByHeight:)]; NSLog(@"sortArrHeight %@", sortArrHeight); //对数组按中的对象按姓名按降序排序 NSArray *sortArrNameDescending = [arr sortedArrayUsingSelector:@selector(compareByNameDescending:)]; NSLog(@"sortArrNameDescending %@", sortArrNameDescending); NSArray *arr2 = [[NSArray alloc] initWithObjects:@"bb", @"cc", @"dd", @"aa", @"ff", nil]; //1 对数组进行升序排序 sortedArrayUsingSelector:的排序方法使用场景:当数组中的对象类型是自定义的类以及要升序排序时 NSArray *sortArrAscending = [arr2 sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@", sortArrAscending); //2 对数组进行降序排序 block的排序方法使用场景:当数组中的对象类型是系统类型时, 并且要降序排序时 NSArray *sortArrDescending = [arr2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { //对block匿名函数实现, 比较方法 //1 将id类型转为NSString * NSString *str1 = (NSString *)obj1; NSString *str2 = (NSString *)obj2; //2 字符串比较 return -[str1 compare:str2]; }]; NSLog(@"%@", sortArrDescending); } return 0;}
0 0
- 对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
- OC中按姓名,年龄,身高升序,降序排序
- 对数组中的对象进行升序以及降序的排序方法(其中对象类型是系统类型).
- 对数组里面的数据进行升序降序排序
- 对数组进行升序和降序排序
- 有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序, 成绩, 年龄
- Java 二维数组根据维度升序或降序排序
- C++ 根据vector 容器内存放的自定义结构的某个元素 进行升序降序排序
- 通过js去对表格的列,根据其内容进行排序(升序或者降序)
- c++ 对数组中的10个元素进行升序和降序排序
- 在block按学号的升序和降序排列;按姓名的升序和降序排序,按年龄的升序和降序排列
- 使用sortedArrayUsingSelector:方法排序数组中的元素
- 有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- 有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- 有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- 简单易用的数组排序(升序、降序)
- iOS 数组的排序(升序、降序、乱序)
- 链表的带参数排序,可以通过姓名、成绩进行升序或降序操作
- Linux命令:traceroute
- Linux用户及用户组设置
- LeetCode-Simplify Path
- hdu fast food(1227)
- BZOJ 1083: [SCOI2005]繁忙的都市
- 对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
- OllyDbg 使用笔记 (六)
- 算法复习--快速排序
- Linux命令:netstate
- mysql内连接更新语句
- windows7 下安装 redhat 双系统 easybcd
- poj 1135 Domino Effect 最短路
- Linux命令:ss
- BZOJ 1084: [SCOI2005]最大子矩阵