iOS - Developer - OC 进阶大全iOS点点滴滴

iOS 数组、字典排序总结

2019-08-20  本文已影响0人  小熊_07cb

1、针对数组简单元素排序
数组元素为字符串或基本数据类型时,可直接使用系统定义的函数进行排序

NSString类具有(compare:)(caseInsensitiveCompare:)(localizedStandardCompare:)方法。
compare:区分大小写
caseInsensitiveCompare: 不区分大小写
localizedStandardCompare:根据当前语言环境的语言规则进行排序(语言环境可能会根据大小写,变音符号等等的顺序而发生改变)

NSArray *arr=@[@"2",@"4",@"3",@"8",@"6",@"5"];
NSArray *resultAgeArray = [arr sortedArrayUsingSelector:@selector(compare:)];
输出结果:2、3、4、5、6、8

NSArray *arr=@[@"d",@"a",@"f",@"b",@"c",@"e"];
NSArray *resultAgeArray = [arr sortedArrayUsingSelector:@selector(compare:)];
输出结果:a、b、c、d、e、f

2、针对数组存字典或者model以它们里面的某个值排序

算法题:对数组进行排序,数组中放的都是Person对象,Person有name(全英文),age两个属性,要求以name为第一个优先级,age为第二个优先级,对数组中的person进行排序。优先排序name,name一致时对age进行排序

    Person *p1=[[Person alloc] init];
    p1.name=@"ddd";
    p1.age=12;
    Person *p2=[[Person alloc] init];
    p2.name=@"aaa";
    p2.age=18;
    Person *p3=[[Person alloc] init];
    p3.name=@"ggg";
    p3.age=13;
    Person *p4=[[Person alloc] init];
    p4.name=@"ddd";
    p4.age=16;
    Person *p5=[[Person alloc] init];
    p5.name=@"ddd";
    p5.age=14;
    Person *p6=[[Person alloc] init];
    p6.name=@"ff";
    p6.age=6;
    NSMutableArray *originalArray=[[NSMutableArray alloc] initWithObjects:p1,p2,p3,p4,p5,p6, nil];
    //创建排序规则NSSortDescriptor
    //key :按照name属性 升序排序
    NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    //name 相同 按照age属性 升序排序
    NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    //给数组添加排序规则
    [originalArray sortUsingDescriptors:@[sort1,sort2]];
    输出结果:p2、p1、p5、p4、p6、p3

3、针对数组存model排序
4、针对字典以key排序
5、针对字典以值排序

上一篇 下一篇

猜你喜欢

热点阅读