NSArray 数组排序
//方法1,使用自带的比较器//compare是数组自带的比较方法NSArray *array=[NSArray arrayWithObjects:@"3",@"1",@"2", nil];NSArray *array2= [array sortedArrayUsingSelector:@selector(compare:)];NSLog(@"%@",array2);
结果是升序排列
//方式二:使用块完成排NSArray *array = [NSArray arrayWithObjects:@"1bc",@"4b6",@"123",@"789",@"3ef", nil];NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {//这里的代码可以参照上面compare:默认的排序方法,也可以把自定义的方法写在这里,给对象排序NSComparisonResult result = [obj1 compare:obj2];return result;}];NSLog(@"排序后:%@",sortedArray);
方法3:自定义排序
#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString* name;@property int age;-(id)initWithNameAndAge:(NSString*) aName and:(int) aAge;-(NSComparisonResult)comparePersonByAge:(Person *)person;-(NSComparisonResult)comparePersonByName:(Person *)person;@end
#import "Person.h"@implementation Person@synthesize name,age;-(id)initWithNameAndAge:(NSString*) aName and:(int) aAge{if (self=[super init]) {name=aName;age=aAge;}return self;}//自定义排序方法-(NSComparisonResult)comparePersonByAge:(Person *)person{//默认按年龄排序NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本数据类型要进行数据转换//如果年龄一样,就按照名字排序//if (result == NSOrderedSame) {// result = [self.name compare:person.name];//}return result;}-(NSComparisonResult)comparePersonByName:(Person *)person{//默认按年龄排序NSComparisonResult result = [ person.name compare:self.name];//注意:基本数据类型要进行数据转换//如果年龄一样,就按照名字排序if (result == NSOrderedSame) {result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];}return result;}- (NSString *)description{return [NSString stringWithFormat:@"%@ %d", name,age];}@end
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {@autoreleasepool {Person *p1 = [[Person alloc]initWithNameAndAge:@" qweasadsasd" and:25];Person *p2 = [[Person alloc]initWithNameAndAge:@"\t1234" and:28];Person *p3 = [[Person alloc]initWithNameAndAge:@"123" and:2];Person *p4 = [[Person alloc]initWithNameAndAge:@"zxc" and:89];Person *p5 = [[Person alloc]initWithNameAndAge:@"123" and:8];NSArray * persons = [NSArray arrayWithObjects:p1,p2,p3,p4,p5,nil];NSArray *sortedArray = [persons sortedArrayUsingSelector:@selector(comparePersonByName:)];NSLog(@"排序后:%@",sortedArray);}return 0;}
方法四:高级排序
NSArray 数组排序的更多相关文章
- OC NSArray数组排序
一.一般排序 // 排序 NSArray *arr = @["]; NSArray *newarr = [arr sortedArrayUsingSelector:@selector(com ...
- iOS之NSArray数组排序
一.数组遍历 除了常用的for和for-in遍历外,系统还提供了三种枚举遍历,对于大量的数据遍历可以使用下列三个方法. - (void)enumerateObjectsUsingBlock:(void ...
- OC中用NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"one", @"two", @"three", @"four" ...
- Objective C中数组排序几种情况的总结
总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 数组排 ...
- NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"zhangsan", @"lisi", @"zhonger", @"z ...
- objective-c系列-NSArray
OC数组NSArray 对比 c数组 和 oc数组对象(指针) 定义 int array[10]; NS ...
- NSArray与NSMutableArray 数组与可变数组
1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...
- OC NSArray 数组
# OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...
- Objective-C之NSArray(数组)默认排序与自定义排序
在讲OC中数组的排序之前我先上一段代码,它是简单数组排序的一种方法(也就是元素是字符串或者数据的数组,因为后面要讲元素为类的数组排序) 代码1: NSArray *sortArr4 = [sortAr ...
随机推荐
- CentOS 6.4 安装搭建 Scrapy 0.22 环境
一.安装Python2.7.6 更新CentOS lib库文件 yum -y update 安装开发工具包 yum groupinstall -y development 安装扩展包 yum inst ...
- eclipse安装pydev插件
打开Eclipse,找到Help菜单栏,进入Install New Software…选项. 点击work with:输入框的旁边点击Add…,Name可以随便输入,Location是http://p ...
- C#如何判断两个数组相等
/// <summary> /// 数组比较是否相等 /// </summary> /// <param name="bt1">数组1</ ...
- bzoj 4010: [HNOI2015]菜肴制作 拓扑排序
题目链接: 题目 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory Limit: 512 MB 问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴 ...
- 【BZOJ】【1022】【SHOI2008】小约翰的游戏John
博弈论 一看题,哇这不是Nim游戏么= =直接异或起来……啊咧怎么不对? 这道题是[Anti-Nim],普通的Nim是取走最后一个就赢,这题是取走最后一个输…… 做法参见 2009年贾志豪论文< ...
- 能"干掉"苹果的中国"黑客"
他是全球发现苹果漏洞最多的人,他曾穷的住在小黑屋,他经常接到国家安全部门的电话,他差点堵住周鸿祎的路,他是谁? 无名英雄 我们最终还是没有见到吴石本人,即便他的生意合伙人刘盛(化名)已经应承了帮我们牵 ...
- Java Servlet Filter(转)
做web开发的人对于Filter应该不会陌生,一直在很简单的使用,但是一直没有系统的总结一下,随着年纪的慢慢长大,喜欢总结一些事情,下面说说我对Filter的理解,官方给出的Filter的定义是在请求 ...
- tomcat 解析(一)-文件解析
做web项目,最常用的服务器就是Apache的tomcat.虽然一直在用tomcat,但都是仅限在使用的阶段,一直没有深入学习过.想深入学习tomcat,首推的肯定是官网:http://tomcat. ...
- oracle RAC--归档日志的开启方法
oracle RAC--归档日志的开启方法 2011-10-07 15:53:04 分类: Oracle oracle RAC--归档日志的开启方法 ======================= ...
- 【面试题015】链表中倒数第k个结点
[面试题015]链表中倒数第k个结点 可以用两个指针,当第一个指针指向了第k个时候,第二个指针让他指向链表的第一个元素,然后这两个指针同时向后面移动, 当第一个指针移动到末尾的时候,第二个指针指 ...