数组排序

作者: 失忆的程序员 | 来源:发表于2021-03-05 10:57 被阅读0次

 // 升序

  // 数组排序

    // 定义一个数字数组

    NSArray *array = @[@(3),@(4),@(2),@(1)];

    // 对数组进行排序

    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {

        XPFLog(@"%@~%@",obj1,obj2); // 3~4 2~1 3~1 3~2

        return [obj1 compare:obj2]; // 升序

    }];

    XPFLog(@"result=%@",result);

// 降序

    // 数组排序

    // 定义一个数字数组

    NSArray *array2 = @[@(13),@(14),@(12),@(11)];

    // 对数组进行排序

    NSArray *result2 = [array2 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {

        XPFLog(@"%@~%@", obj1, obj2); // 3~4 2~1 3~1 3~2

        return [obj2 compare:obj1]; // 降序

    }];

    XPFLog(@"result= %@",result2);

方法一:

    NSArray *sortArray = [arrayM sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

                SDHomeNewTaskModel *model1 = obj1;

                SDHomeNewTaskModel *model2 = obj2;

                if ([model1.distance floatValue] > [model2.distance floatValue]) {

                    return NSOrderedDescending;//降序

                }else if ([model1.distance floatValue] > [model2.distance floatValue]){

                    return NSOrderedAscending;//升序

                }else {

                    return NSOrderedSame;//相等

                }

            }];

            for (SDHomeNewTaskModel *model in sortArray) {

                NSLog(@"distance3:------> %@", model.distance);

            }

方法二:

                NSMutableArray *arr = [NSMutableArray array];

            for (int i =0; i < arrayM.count; i ++) {

                SDHomeNewTaskModel *model = arrayM[i];

                [arr addObject:model];

                NSLog(@"distance2:------> %@", model.distance);

            }

            //这里类似KVO的读取属性的方法,直接从字符串读取对象属性,注意不要写错ascending:指定一个集合是否按照升序(YES)还是降序(NO)

            NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES];

            //这个数组保存的是排序好的对象

            NSArray *arr = arrayM;

            NSArray *tempArray = [arr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

            // 输出排序结果

            for (SDHomeNewTaskModel *model in tempArray) {

                NSLog(@"distance3:------> %@", model.distance);

            }

方法三:

    -(NSString*)stringWithDict:(NSDictionary*)dict {

    NSArray*keys = [dict allKeys];

    NSArray*sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {

        return [obj1 compare:obj2 options:NSNumericSearch];

    }];

    NSString *str = @"";

    for(NSString*categoryId in sortedArray) {

        id value = [dict objectForKey:categoryId];

        if([value isKindOfClass:[NSDictionary class]]) {

            value = [self stringWithDict:value];

        }

    NSLog(@"[dict objectForKey:categoryId] === %@",[dict objectForKey:categoryId]);

        if([str length] !=0) {

            str = [str stringByAppendingString:@";"];

        }

        str = [str stringByAppendingFormat:@"%@:%@",categoryId,value];

    }

    return str;

}

方法四:

-(NSString *)getNeedSignStrFrom:(id)obj{

    NSDictionary *dict = obj;

    NSArray *arrPrimary = [dict.allKeys mutableCopy];

    NSArray *arrKey = [arrPrimary sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){

        NSComparisonResult result = [obj1 compare:obj2];

        return result==NSOrderedDescending;//NSOrderedAscending 倒序

    }];

    NSString*str =@"";

    for (NSString *s in arrKey) {

        id value = dict[s];

        if([value isKindOfClass:[NSDictionary class]]) {

            value = [self getNeedSignStrFrom:value];

        }

        if([str length] !=0) {

            str = [str stringByAppendingString:@","];

        }

        str = [str stringByAppendingFormat:@"%@:%@",s,value];

    }

    NSLog(@"str:%@",str);

    return str;

}

参考1:进哥哥爱你

参考2:公羽寒

相关文章

  • iOS 各种排序

    数组排序 数组中字典排序 数组中字典按照某个value排序 排序方法

  • Java 数组的排序、逆序

    数组的排序、逆序测试数据 数组选择排序 数组冒泡排序 数组逆序

  • java 数组和list排序

    数组排序 其中有数组排序和数组对象排序 数组一些数字排序则直接用Arrays.sort()加数组就可以。数组对象则...

  • 数组

    数组的遍历 数组是值类型 数组的排序 冒泡排序 多维数组

  • 2018-01-14

    php数组排序 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据...

  • PHP排序算法

    排序算法 冒泡排序(数组排序) 快速排序(数组排序) 参考 http://www.cnblogs.com/enia...

  • 算法记录

    快速排序 基本算法: 归并排序讲数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; 快速排序通过一...

  • 选择排序

    选择排序 调用选择排序 生成数组 打印输出排序数组

  • 按照数组中的字符串顺序给另一个数组排序

    数组1 数组2: 数组1按照数组2的顺序排序 sortedUserDicts就是排序后的数组

  • 排序问题

    数组排序 数组排序最简单了,直接Arrays.sort(a); a是待排序的数组 根据对象中的成员变量来排序 这个...

网友评论

    本文标题:数组排序

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