关于OC中的几种数组排序方法
2016-07-27 23:09
501 查看
NSArray *arr = @[@(7),@(17),@(6),@(19),@(11),@(15),@(2),@(9)];
1)sortedArrayUsingComparator是不可变数组的排序方法,它有一个数组类型的返回值,它对数组进行排序,将排序的结果以一个新的数组返回,它的返回值是NSArray
//这个排序方法是有返回值的,它排序完返回一个新的数组,这个新的数组就是排序后的数组,在对数组进行排序的时候,根据传的是NSOrderedDescending就进行两个元素之间的交换,传入NSOrderedAscending就不对元素进行交换
2)sortUsingComparator是可变数组的排序方法,直接改变数组中元素的顺序,返回值是void
1)sortedArrayUsingComparator是不可变数组的排序方法,它有一个数组类型的返回值,它对数组进行排序,将排序的结果以一个新的数组返回,它的返回值是NSArray
arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return NSOrderedDescending; } else if ([obj1 integerValue] < [obj2 integerValue]) { return NSOrderedAscending; } return NSOrderedSame; //return arc4random_uniform(100)%3 - 1;//让数组乱序 }];
//这个排序方法是有返回值的,它排序完返回一个新的数组,这个新的数组就是排序后的数组,在对数组进行排序的时候,根据传的是NSOrderedDescending就进行两个元素之间的交换,传入NSOrderedAscending就不对元素进行交换
if ([obj1 integerValue] > [obj2 integerValue]) { return NSOrderedDescending; } else if ([obj1 integerValue] < [obj2 integerValue]) { return NSOrderedAscending; } return NSOrderedSame; //和下面的效果是相同的 //return [obj1 integerValue] > [obj2 integerValue];
2)sortUsingComparator是可变数组的排序方法,直接改变数组中元素的顺序,返回值是void
NSMutableArray *arrM = [NSMutableArray arrayWithArray:arr]; // 这个排序方法没有返回值,它直接操作数组的元素,将源数组排序好 [arrM sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { if ([obj1 integerValue] < [obj2 integerValue]) { return NSOrderedDescending; } else if ([obj1 integerValue] > [obj2 integerValue]) { return NSOrderedAscending; } return NSOrderedSame; // return [obj1 integerValue] > [obj2 integerValue];//简写方式 }]; NSLog(@"%@", arr);
相关文章推荐
- 安装vmtools for linux
- file表单只显示规定格式的文件
- mac电脑下的php开发环境配置
- 关系模型的基本概念
- POJ 1163 The Triangle
- Android WebView常见问题及解决方案汇总
- <实训|第七天>横扫Linux磁盘分区、软件安装障碍附制作软件仓库
- Oracle 分区表
- hibernate插件下载
- QTreeView QListView QTableView 类
- jquery中prop&attr之disabled问题
- UVA 11468 Substring [AC自动机] [全概率公式]
- PL/SQL连接oracle数据库
- windows7直接安装运行64位 haproxy1.5
- 四.财务分析与价值投资
- Vim
- Spring核心技术(十一)——基于Java的容器配置(一)
- mysql-行锁的实现
- Ethervane Echo剪贴板增强版
- Spring核心技术(十一)——基于Java的容器配置(一)