OC中按姓名,年龄,身高升序,降序排序

7 篇文章 0 订阅
<span style="font-size:24px;">{
    NSString *_name;//性别
    NSInteger _age;//年龄
    CGFloat _height;//身高
}
//setter  name
- (void)setName:(NSString *)name;
//getter
- (NSString *)name;
//setter  age
- (void)setAge:(NSInteger)age;
//getter
-(NSInteger)age;
//setter  age
- (void)setHeight:(NSInteger)height;
//getter
-(NSInteger)height;
//desciption
-(NSString *)description;
//customize init method
- (id)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height;
//compare
//age
- (NSComparisonResult)compareByAge:(Person *)anPerson;
//height
- (NSComparisonResult)compareByHeight:(Person *)anPerson;
//name
- (NSComparisonResult)compareByName:(Person *)anPerson;
//按姓名降序
- (NSComparisonResult)compareByNameDecending:(Person *)anPerson;
#import "Person.h"

@implementation Person
#pragma mark - setter and getter
//setter  name
- (void)setName:(NSString *)name
{
    _name = name;
}
//getter
- (NSString *)name
{
    return _name;
}
//setter  age
- (void)setAge:(NSInteger)age
{
    _age = age;
}
//getter
-(NSInteger)age
{
    return _age;
}
//setter  age
- (void)setHeight:(NSInteger)height
{
    _height = height;
}
//getter
-(NSInteger)height
{
    return _height;
}
//对方法就行分类
#pragma mark - override method
//desciption
-(NSString *)description
{
    return [NSString stringWithFormat:@"name:%@,age:%ld,height:%g", _name, (long)_age, _height];
}
#pragma mark - init method
//customize 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
//compare
//age
- (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
    }
}
//height
- (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
    }
}
//name
- (NSComparisonResult)compareByName:(Person *)anPerson
{
    return [[self name] compare: [anPerson name]];
}
//按姓名降序
- (NSComparisonResult)compareByNameDecending:(Person *)anPerson
{
    return -[[self name] compare: [anPerson name]];//不加负号为升序排序,加负号为降序排序
}

@end
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Person *cui = [[Person alloc] initWithName:@"cui" age:19 height:175];
        Person *wang = [[Person alloc] initWithName:@"wang" age:12 height:12];
        Person *zhang = [[Person alloc] initWithName:@"zhang" age:13 height:67];
        Person *heng = [[Person alloc] initWithName:@"heng" age:56 height:120];
        Person *cong = [[Person alloc] initWithName:@"cong" age:11 height:111];
        NSArray *arr = [[NSArray alloc] initWithObjects:cui, wang, zhang, heng, cong, nil];
         NSLog(@"按年龄排序为");
        //对数组中的对象按年龄升序排序
         NSArray *arrSortByAge = [arr sortedArrayUsingSelector:@selector(compareByAge:)];
        NSLog(@"%@", arrSortByAge);
        //对数组中的对象按姓名升序排序
         NSLog(@"按姓名排序为");
       NSArray * arrSortByName = [arr sortedArrayUsingSelector:@selector(compareByName:)];
        NSLog(@"%@", arrSortByName);
        //对数组中的对象按身高升序排序
        NSLog(@"按身高排序为");
        NSArray * arrSortByHeight = [arr sortedArrayUsingSelector:@selector(compareByHeight:)];
        NSLog(@"%@", arrSortByHeight);
        按姓名降序
        NSLog(@"按姓名降序排序为:");
        NSArray *arrSortByNameDecending =[arr sortedArrayUsingSelector:@selector(compareByNameDecending:)];
        NSLog(@"%@", arrSortByNameDecending);
        NSArray *arr = [[NSArray alloc] initWithObjects:@"cc", @"bb", @"ee", @"dd", @"aa", nil];
        //1.对数组进行升序排序
        //sortedArrayUsingSelector:排序方法,使用场景,适用于升序排序以及自定义的类排序
        NSArray *arrAscending = [arr sortedArrayUsingSelector:@selector(compare:)];//默认为升序排序
        NSLog(@"%@", arrAscending);
        //2.对数组进行降序排序  block
        //block的排序方法,使用场景,适用于当数组中的对象类型是系统类型时,并且要降序排序时。
     NSArray *arrDecending = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
            //对block匿名函数实现,比较方法
            //1.将id类型转为NSString *;
            NSString *str1 = (NSString *)obj1;//(强制类型转换,只是等号右边的),等号左边的是用来接收转换后的
            NSString *str2 = (NSString *)obj2;
            //字符串比较
            return -[str1 compare:str2];
        }];
        NSLog(@"%@",arrDecending);
    }
    return 0;
}</span>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值