美文网首页
记iOS数组排序

记iOS数组排序

作者: HEALTHYbaby | 来源:发表于2017-03-21 14:27 被阅读49次
    #pragma mark -- 数组排序方法(升序)
    
    - (void)arraySortASC{
    
    //数组排序
    
    //定义一个数字数组
    
    NSArray *array = @[@(3),@(4),@(2),@(1)];
    
    //对数组进行排序
    
    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
    NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2
    
    return [obj1 compare:obj2]; //升序
    
    }];
    
    NSLog(@"result=%@",result);
    
    }
    
    #pragma mark -- 数组排序方法(降序)
    
    - (void)arraySortDESC{
    
    //数组排序
    
    //定义一个数字数组
    
    NSArray *array = @[@(3),@(4),@(2),@(1)];
    
    //对数组进行排序
    
    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
    NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2
    
    return [obj2 compare:obj1]; //降序
    
    }];
    
    NSLog(@"result=%@",result);
    
    }
    
    #pragma mark -- 数组排序方法(乱序)
    
    - (void)arraySortBreak{
    
    //数组排序
    
    //定义一个数字数组
    
    NSArray *array = @[@(3),@(4),@(2),@(1),@(5),@(6),@(0)];
    
    //对数组进行排序
    
    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
    NSLog(@"%@~%@",obj1,obj2);
    
    //乱序
    
    if (arc4random_uniform(2) == 0) {
    
    return [obj2 compare:obj1]; //降序
    
    }
    
    else{
    
    return [obj1 compare:obj2]; //升序
    
    }
    
    }];
    
    NSLog(@"result=%@",result);
    
    }
    
    

    同时可以应用在乱序的NSDictionary。

    若果字典中的key-对应的是"A - Z"或"1 - n",可以先把字典中的allKeys取出,然后根据排好序的NSArray去取字典中的value。达到间接对字典排序。

    若根据一个字符串数组的首个字进行排序的话,可以先把字符串数组根据首字母进行分组,得到一个乱序的字典,然后再对字典间接排序。

    相关文章

      网友评论

          本文标题:记iOS数组排序

          本文链接:https://www.haomeiwen.com/subject/eyhgnttx.html