数组排序:对象数组中根据对象的某个字段排序
2016-09-09 15:55
260 查看
开发中,经常碰到数组的排序问题,当然原始的冒泡、选择排序,还是比较好用的。
我们常常需要后台排好序再返回,当然也有需要前端排序的。我觉得数组的排序,根据对象数组的某个字段排序,是非常常见的。现在来说说:
sortedArrayUsingSelector
这种是最简单的排序。直接对数组进行排序。
- 我们看自定义compare的
控制器调用:
输出:
sortedArrayUsingComparator
我们常常需要后台排好序再返回,当然也有需要前端排序的。我觉得数组的排序,根据对象数组的某个字段排序,是非常常见的。现在来说说:
sortedArrayUsingSelector
- (void)sortArray1 { NSArray *tempArray = [NSArray arrayWithObjects:@"abc",@"123",@"bac",@"345",@"Abc", nil]; //compare:使用的是字符串自带的方法 NSArray *sortArray = [tempArray sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",sortArray); }
这种是最简单的排序。直接对数组进行排序。
- 我们看自定义compare的
//Car类 .h文件 @interface Car : NSObject @property(nonatomic,copy)NSString *carId; @property(nonatomic,assign)int carBuyTime; + (instancetype)CarWithCarId:(NSString *)carId andCarBuyTime:(int)carBuyTime; - (NSComparisonResult)compareCar:(Car *)car; @end //.m 文件 #import "Car.h" @implementation Car + (instancetype)CarWithCarId:(NSString *)carId andCarBuyTime:(int)carBuyTime { Car *car = [[Car alloc]init]; car.carId = carId; car.carBuyTime = carBuyTime; return car; } - (NSComparisonResult)compareCar:(Car *)car { //先按照购买时间排序 NSComparisonResult result = [[NSNumber numberWithInt:car.carBuyTime]compare:[NSNumber numberWithInt:self.carBuyTime]]; if (result == NSOrderedSame) { result = [car.carId compare:car.carId]; } return result; } @end
控制器调用:
- (void)sortArray2 { Car *car2 = [Car CarWithCarId:@"87323" andCarBuyTime:1988]; Car *car3 = [Car CarWithCarId:@"87323" andCarBuyTime:1962]; Car *car4 = [Car CarWithCarId:@"66666" andCarBuyTime:1970]; Car *car1 = [Car CarWithCarId:@"32311" andCarBuyTime:1970]; NSArray *array = [NSArray arrayWithObjects:car1,car2,car3,car4, nil]; NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compareCar:)]; NSLog(@"%@",sortedArray); }
输出:
sortedArrayUsingComparator
- (void)sortArray3 { Car *car2 = [Car CarWithCarId:@"87323" andCarBuyTime:1988]; Car *car3 = [Car CarWithCarId:@"87323" andCarBuyTime:1962]; Car *car4 = [Car CarWithCarId:@"66666" andCarBuyTime:1970]; Car *car1 = [Car CarWithCarId:@"32311" andCarBuyTime:1970]; NSArray *array = [NSArray arrayWithObjects:car1,car2,car3,car4, nil]; array = [array sortedArrayUsingComparator:^NSComparisonResult(Car * obj1, Car * obj2) { NSComparisonResult result = [[NSNumber numberWithInt:obj1.carBuyTime]compare:[NSNumber numberWithInt:obj2.carBuyTime]]; if (result == NSOrderedSame) { result = [obj1.carId compare:obj2.carId]; } return result; }]; }
相关文章推荐
- 定义Car类,包含两个字段:name和price; (2)在Main方法中,使用Array.Sort方法对Car对象数组根据姓名和价格排序。
- 对象数组根据某属性列的灵活排序
- javascript 数组对象根据指定属性排序
- 根据对象的某个字段对List<Object>排序
- PHP数组根据数组内的某个单元字段排序
- json数组本地获取,以及根据字段排序【部分摘录】
- List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- php根据某字段对多维数组进行排序的方法
- PHP 多维数组根据某个字段排序
- javascript 对象数组根据对象object key的值排序
- javascript 对象数组根据对象object key的值排序
- 根据list对象中的某一字段排序
- 对象根据字段排序
- php根据某字段对多维数组进行排序的方法
- JavaScript 根据数组中对象的属性排序
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用-- Collections与Arrays
- js 数组对象根据某一属性排序
- 对象数组根据某属性列的灵活排序
- js根据数组对象中某属性进行排序
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用