zoukankan      html  css  js  c++  java
  • Object-C,NSArraySortTest,数组排序3种方式

      晚上回来,继续写Object-C的例子,今天不打算写iOS可视化界面的程序,太累了。

      刚刚dady又电话过来,老一套,烦死了。

      其实,我一直一个观点,无论发生什么事情,不要整天一副不开心的样子。

      开开心心过日子,活着就要懂得珍惜。


       刚刚写了数组排序,有3种方法,使用对象自带的compare方法、传入比较函数、匿名函数-代码块。

       个人认为,本质是2种方法。

       一种是,类似Java中的对象,实现Comparable接口的compareTo方法。

      一种是,传入比较器Comparator,比较灵活。


    代码

    //
    //  main.m
    //  NSArraySort
    //
    //  Created by fansunion on 15/12/2.
    //  Copyright (c) 2015年 demo. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    //需要定义在main函数之前,和C语言一样,和java不一样
    //比较函数,降序排列
    NSComparisonResult intSort(id a,id b,void* context){
        int v1 =  [a intValue];
        int v2 = [b intValue];
        if(v1 > v2){
            return NSOrderedAscending;
        }else if(v1 < v2){
            return NSOrderedDescending;
        }else{
            return NSOrderedSame;
        }
    }
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            //字符串数组,使用自带的compare方法排序。相当于Java中对象实现Comparable接口的compareTo方法
            NSArray* strArray = @[@"Java",@"Android",@"Object-C"];
            strArray = [strArray sortedArrayUsingSelector:@selector(compare:)];
            NSLog(@("%@"),strArray);
            //整型数组,传入比较函数。相当于Java中传入Comparator对象,这种方式更加灵活。
            NSArray* numberArray =@[[NSNumber numberWithInteger:2015],[NSNumber numberWithInt:1949],[NSNumber numberWithInt:2020]];
            numberArray = [numberArray sortedArrayUsingFunction:intSort context:nil];
            NSLog(@"%@",numberArray);
            //使用代码块比较,进行排序(和第2种方法感觉没啥区别啊),升序
            NSArray* numberArrayAsc =[numberArray sortedArrayUsingComparator:^(id a,id b){
                int v1 = [a intValue];
                int v2 = [b intValue];
                if(v1 > v2){
                    return NSOrderedDescending;
                }else if(v1 < v2){
                    return NSOrderedAscending;
                }else{
                    return NSOrderedSame;
                }
            }];
            NSLog(@"%@",numberArrayAsc);
        }
        return 0;
    }
    
    


      程序输出

    2015-12-02 20:39:09.500 NSArraySort[5534:380948] (

        Android,

        Java,

        "Object-C"

    )

    2015-12-02 20:39:09.502 NSArraySort[5534:380948] (

        2020,

        2015,

        1949

    )

    2015-12-02 20:39:09.502 NSArraySort[5534:380948] (

        1949,

        2015,

        2020

    )

    Program ended with exit code: 0


  • 相关阅读:
    杭电 Problem
    杭电Problem 5053 the sum of cube 【数学公式】
    杭电 Problem 2089 不要62 【打表】
    杭电 Problem 4548 美素数【打表】
    杭电 Problem 2008 分拆素数和 【打表】
    杭电 Problem 1722 Cake 【gcd】
    杭电 Problem 2187 悼念512汶川大地震遇难同胞——老人是真饿了【贪心】
    杭电Problem 1872 稳定排序
    杭电 Problem 1753 大明A+B
    东北林业大 564 汉诺塔
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462552.html
Copyright © 2011-2022 走看看