zoukankan      html  css  js  c++  java
  • 为集合排序的三个方法

     // 为集合字符串排序(cmpare:)

                

                // - null :空类型  就是字符型的0;

                // - [NSNull null]是对象类型,能够存入集合的数据:为其分配了内存,但其中的值为空(不能被排序否则程序会崩溃);

                // - 对非对象类型指针赋空值用null(如C指针)

                

                // 对集合内的字符串排序:调用排序方法后会创建一个新的集合返回

                // - sortedArrayUsing...(sort:分类)

                NSArray *group = @[@"red", @"green", @"blue"];

               

                // 1.选择器排序:调用系统的排序方法,即字符串的比较方法

                NSArray *reorder_S = [group sortedArrayUsingSelector:@selector(compare:)];

                NSLog(@"selector:%@", reorder_S);

                

                // 2.描述排序

                // - 提取排序的信息

                // > Key:没有key所以使用nil(为自定义对象排序Key就是排序的属性)

                // > ascending:布尔类型,YES为升序(ASKII码值)

               

                // - 为方法传递排序的参数

                NSSortDescriptor *group_D = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];

              

                NSArray *reorder_D = [group sortedArrayUsingDescriptors:@[group_D]];

                NSLog(@"descriptor:%@", reorder_D);

                

                // 3.代码块排序:也是调用字符串的比较方法

                NSArray *reorder_B = [group sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {return [obj1 compare:obj2];}];

                NSLog(@"block:%@",reorder_B);

                 

                

                // - 参数:不会影响排序的顺序

                // > SortCurrent:并行排序,即多线程排序,特点:安全性不好

                // > SortStable:串行排序,即打单步执行:数据庞大可能效率有点低

                // - block的实现,因为是取值两两比较:使用结果仅有三个,根据返回结果就确定大小然后进行返回

                reorder_B = [group sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) { return [obj1 compare:obj2]; }];

                

               NSLog(@"block:%@",reorder_B);

  • 相关阅读:
    domain logic approaches
    远程连接mysql提示:1251-client does not support authentication protocol requested by server
    Navicat远程连接mysql时,报错误“Can't connect to MySQL server on 'ip'(10038)”的解决方法
    XShell连接不了(ubunt14.04)虚拟机Could not connect to ‘192.168.1.105’ (port 22): Connection failed
    Ubuntu20.04 安装和卸载MySQL8
    linux系统(Ubuntu)之合上笔记本盖但不断网
    Ubuntu20.04 FTP服务器的搭建
    Ubuntu20.04安装SqlServer2019教程-简洁版
    Linux更改主机名的三种方法
    ubuntu grub引导win10
  • 原文地址:https://www.cnblogs.com/pruple/p/5252207.html
Copyright © 2011-2022 走看看