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);

    }

    }

  • 相关阅读:
    日志组件一:Log4j
    HTTPS加密那点事--轻松秒懂HTTPS非对称加密
    图解Git
    Python 迭代器 & __iter__方法
    Fiddler 抓包工具总结
    Python使用struct处理二进制(pack和unpack用法)
    Python binascii
    常见证书格式及相互转换
    MyBatis Generator 详解
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
  • 原文地址:https://www.cnblogs.com/geng/p/2140785.html
Copyright © 2011-2022 走看看