zoukankan      html  css  js  c++  java
  • NSMutableArray 排序【转】

    (1)直接调用系统的方法排序int

    NSMutableArray *array = [[NSMutableArray allocinit];

    [array addObject:[NSNumber numberWithInt:20]];

    [array addObject:[NSNumber numberWithInt:1]];

    [array addObject:[NSNumber numberWithInt:4]];

    NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];

    for(inti =0; i < [sortedArraycount]; i++)

    {

      intx = [[sortedArrayobjectAtIndex:i]intValue];

      NSLog(@"######%d\n", x);

    }

    (2)用descriptor方法

    #import<Cocoa/Cocoa.h>

     

    @interface Node: NSObject {

    int x;

    int y;

    int v;

    }

     

    @property int x;

    @property int y;

    @property int v;

    - (id)init:(int)tx y:(int)ty v:(int)tv;

    @end

     

    @implementation Node

     

    @synthesizex;

    @synthesizey;

    @synthesizev;

     

    - (id)init:(int)tx y:(int)ty v:(int)tv {

    x= tx;

    y= ty;

    v= tv;

    return self;

    }

     

    @end

     

    int main(int argc,char*argv[])

    {

    NSMutableArray *myMutableArray = [[NSMutableArray alloc]init];

    Node *n[2];

    n[0] = [[Node alloc]init:2 y:1 v:1];

    n[1] = [[Node alloc]init:4 y:2 v:2];

     

    [myMutableArray addObject:n[0]];

    [myMutableArray addObject:n[1]];

    NSSortDescriptor* sortByA = [NSSortDescriptor sortDescriptorWithKey:@"x" ascending:NO];

    [myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByA]];

    for(Node *t in myMutableArray) {

    NSLog(@"x === %d", t.x);

    NSLog(@"y === %d", t.y);

    NSLog(@"v === %d", t.v);

    }

    }

     

     

    (3)自定义重写方法

    /*

     

    Abstract:Constants returned by comparison functions, indicating whether a value is equal to, less than, or greater than another value.

    Declaration:enum CFComparisonResult{

      kCFCompareLessThan= -1,

      kCFCompareEqualTo= 0,

      kCFCompareGreaterThan= 1

    };

    */

    #import <Cocoa/Cocoa.h>

    @implementation NSNumber (MySort)

    - (NSComparisonResult) myCompare:(NSString *)other {

        //这里可以作适当的修正后再比较

        int result = ([self intValue]>>1) - ([other intValue]>>1);

        //这里可以控制排序的顺序和逆序

        return result < 0 ? NSOrderedDescending : result > 0 ? NSOrderedAscending : NSOrderedSame;

    }

     

    @end

    int main(int argc, char *argv[])

    {

    NSMutableArray *array = [[NSMutableArray alloc]init];

    [array addObject:[NSNumber numberWithInt:20]];

    [array addObject:[NSNumber numberWithInt:1]];

    [array addObject:[NSNumber numberWithInt:4]];

    NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(myCompare:)];

    for(int i = 0; i < [sortedArray count]; i++)

    {

    int x = [[sortedArray objectAtIndex:i]intValue];

    NSLog(@"######%d\n", x);

    }

    }

  • 相关阅读:
    todo: SDC
    2017-2018-2 实验四《Android程序设计》实验报告
    《Java程序设计》第十周课下作业
    2017-2018-2 实验三 《Java面向对象程序设计》实验报告
    《Java程序设计》第九周学习总结
    结对编程练习_四则运算(第二周)
    《Java程序设计》第八周学习总结
    2017-2018-2 实验二 《Java面向对象程序设计》实验报告
    结对编程练习_四则运算(第一周)
    《Java程序设计》第七周学习总结
  • 原文地址:https://www.cnblogs.com/geng/p/2140785.html
Copyright © 2011-2022 走看看