大家好,这是我第一次自己写一篇博客,我刚学习oc语言没有多久,下面是我对数组知识点排序方面的一些理解,有不对的地方,还请各位多多指正
// 1.整型数字变量 改为数字类型 注意语法格式
int a = 10;NSNumber *n = [NSNumber numberWithInt:a];
NSLog(@"%@",n);
// 2.这是将整型数据改为字符串类型 , 注意格式 和后面的(占位符)。
int a1 = 10;
NSString *str = [NSString stringWithFormat:@"%d",a1];
NSLog(@"%@",str);
// 3.将数字类型 转为整型数字类型
int num = [n intValue];
NSLog(@"%d",num);
// 4.下面有两个可变数组与不可变数组排序的实例比较
// 4.1下面的打印结果是 125 23 32 345 45 这种方法是按照字符串比较首字母的方法依次排序 而且只能是升序
// 注:字符串比较方法就类似于C语言中的 strcmp 方法 。
NSArray *arr = [[NSArray alloc] initWithObjects:@"45",@"23",@"345",@"32",@"125", nil];
NSArray *arr1 = [arr sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arr1);
// 4.2下面的打印结果是 23 32 45 125 345 是属于数组内的字符串转为数值类型做比较后的结果
// 注:如果在比较时不将其转换为 整型数字类型 它还会按照字符串比较方法进行比较
NSArray *arr0 = [[NSArray alloc] initWithObjects:@"45",@"23",@"345",@"32",@"125", nil];
NSArray *arr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 intValue] > [obj2 intValue]) {
return 1l;
}return 0l;
}];
NSLog(@"%@",arr2);
// 下面两个可变数组比较方式 只是在内部将比较对象做以改变 但不改变其本身原始数据类型
// 4.3下面这种方法打印结构为 123 23 34 456 567 这种方法是按照字符串比较首字母的方法依次排序 而且只能是升序
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"34",@"456",@"23",@"567",@"123", nil];
[arr3 sortUsingSelector:@selector(compare:)];
NSLog(@"%@",arr3);
// 4.4下面这种方法打印结果为 23 34 123 456 567 属于按数字大小正常升序排列
NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@"34",@"456",@"23",@"567",@"123", nil];
[arr4 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 intValue] > [obj2 intValue] ) {
return 1l;
}return 0l;
}];
NSLog(@"%@",arr4);
/**
* 注意:1.在做题过程中要知道不可变数组是有返回值的,当你对其修改时,需要一个新的数组接受,这样是它与可变数组最大的区别
2.当你需要进行降序时,你只需将 > 改为 < 即可。
重点:要记住两种比较方式的不同点以及它们语法的书写格式。
*/