使用sortedArrayUsingSelector:方法排序数组中的元素
2014-07-18 07:53
836 查看
一、实例方法
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;
返回一个数组,并通过给定的比较方法来接收排序后的元素。
新的数组的数组包含对接收数组的元素,而不是复制它们的副本。
- (NSComparisonResult)compare:(NSNumber *)decimalNumber;
// compare two NSDecimalNumbers
其中NSComparisonResult是一个枚举类型,它有三个参数,如下:
enum {
NSOrderedAscend= -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;
这些枚举常量被用来指示如何对请求的对象进行排序。
NSOrderedAscending 表示升序
NSOrderedDescending 表示降序
二、示例代码
创建一个sort类用来声明属性和方法。
main.m头文件如下:
sort.h文件如下:
sort.m文件如下:
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;
返回一个数组,并通过给定的比较方法来接收排序后的元素。
新的数组的数组包含对接收数组的元素,而不是复制它们的副本。
- (NSComparisonResult)compare:(NSNumber *)decimalNumber;
// compare two NSDecimalNumbers
其中NSComparisonResult是一个枚举类型,它有三个参数,如下:
enum {
NSOrderedAscend= -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;
这些枚举常量被用来指示如何对请求的对象进行排序。
NSOrderedAscending 表示升序
NSOrderedDescending 表示降序
二、示例代码
创建一个sort类用来声明属性和方法。
main.m头文件如下:
// main.m #import <Foundation/Foundation.h> #import "sort.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 创建三个sort对象 sort *sort1 = [sort sortAlloc]; sort *sort2 = [sort sortAlloc]; sort *sort3 = [sort sortAlloc]; // 分别设置三个对象的name sort1.name = @"one1"; sort2.name = @"age2"; sort3.name = @"hhh3"; // 将三个对象添加到array1数组中 NSArray *array1 = [NSArray arrayWithObjects:sort1, sort2, sort3, nil]; // sortedArrayUsingSelector:调用myCompare:方法来对array1进行排序 NSArray *array2 = [array1 sortedArrayUsingSelector:@selector(myCompare:)]; // 循环打印array2中排好序的元素 for (sort *sort4 in array2) { NSLog(@"%@", sort4.name); } //////////////////////////////////// sort *sort5 = [sort sortAlloc]; sort *sort6 = [sort sortAlloc]; sort *sort7 = [sort sortAlloc]; sort5.number = 20; sort6.number = 10; sort7.number = 30; NSArray *array3 = [NSArray arrayWithObjects:sort5, sort6, sort7, nil]; NSArray *array4 = [array3 sortedArrayUsingSelector:@selector(compare:)]; for (sort *sort8 in array4) { NSLog(@"%d", sort8.number); } } return 0; }
sort.h文件如下:
// sort.h #import <Foundation/Foundation.h> @interface sort : NSObject { } // 为sort类声明一个name属性和一个number属性 @property (nonatomic, retain) NSString *name; @property (nonatomic, assign) int number; // 自定义一个myCompare: 方法,用来排序name字符串的顺序 - (NSComparisonResult)myCompare:(NSString *)name; // 自定义一个myCompare2: 方法,用来排序number数字的顺序 - (NSComparisonResult)myCompare2:(sort *)sort; // 创建一个类方法,方便初始化对象 + (sort *)sortAlloc; @end
sort.m文件如下:
// sort.m #import "sort.h" @implementation sort + (sort *)sortAlloc { sort * sort1 = [[sort alloc] init]; return sort1; } //- (NSComparisonResult)compare:(NSString *)string; // compare:方法用于比较字符串并排序 - (NSComparisonResult)myCompare:(sort *)sort { return [self.name compare:sort.name]; } // 该方法用来排序数字 - (NSComparisonResult)myCompare2:(sort *)sort { if ( self.number > sort.number ) { return NSOrderedDescending; } else if (self.number < sort.number ) { return NSOrderedAscending; } else { return NSOrderedSame; } } @end
相关文章推荐
- 对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
- NAarray sortedArrayUsingComparator 排序方法的使用
- leetcode:Remove Duplicates from Sorted Array去掉排序数组中重复的元素
- [ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
- 数组排序系列 sortedArrayUsingComparator
- leetCode 108.Convert Sorted Array to Binary Search Tree(将排序数组转换为BST) 解题思路和方法
- Lettcode_26_Remove Duplicates from Sorted Array——移除排序数组中重复元素
- LeetCode 26 Remove Duplicates from Sorted Array(从已排序数组中移除重复元素)
- [Leetcode] Remove duplicates from sorted array 从已排序的数组中删除重复元素
- LeetCode 26 Remove Duplicates from Sorted Array(从已排序数组中移除重复元素)
- 浅谈JavaScript--Array数组sort()排序方法与自定义比较器的使用
- NSArray类中的sortedArrayUsingSelector实例对象方法----详解
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
- 使用Array的Sort()方法对数组进行排序
- LeetCode: Remove Duplicates from Sorted Array II(在排序数组中删除重复元素)
- js使用Array.prototype.sort()对数组对象排序的方法
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】
- NSArray的排序功能sortedArrayUsingSelector
- Leetcode刷题记—— Remove Duplicates from Sorted Array II(已排序数组移除重复元素2)