Object-C,NSArraySortTest,数组排序3种方式
2024-08-31 16:37:35
晚上回来,继续写Object-C的例子,今天不打算写iOS可视化界面的程序,太累了。
刚刚dady又电话过来,老一套,烦死了。
其实,我一直一个观点,无论发生什么事情,不要整天一副不开心的样子。
开开心心过日子,活着就要懂得珍惜。
刚刚写了数组排序,有3种方法,使用对象自带的compare方法、传入比较函数、匿名函数-代码块。
个人认为,本质是2种方法。
一种是,类似Java中的对象,实现Comparable接口的compareTo方法。
一种是,传入比较器Comparator,比较灵活。
代码
//
// main.m
// NSArraySort
//
// Created by fansunion on 15/12/2.
// Copyright (c) 2015年 demo. All rights reserved.
// #import <Foundation/Foundation.h> //需要定义在main函数之前,和C语言一样,和java不一样
//比较函数,降序排列
NSComparisonResult intSort(id a,id b,void* context){
int v1 = [a intValue];
int v2 = [b intValue];
if(v1 > v2){
return NSOrderedAscending;
}else if(v1 < v2){
return NSOrderedDescending;
}else{
return NSOrderedSame;
}
} int main(int argc, const char * argv[]) {
@autoreleasepool {
//字符串数组,使用自带的compare方法排序。相当于Java中对象实现Comparable接口的compareTo方法
NSArray* strArray = @[@"Java",@"Android",@"Object-C"];
strArray = [strArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@("%@"),strArray);
//整型数组,传入比较函数。相当于Java中传入Comparator对象,这种方式更加灵活。
NSArray* numberArray =@[[NSNumber numberWithInteger:2015],[NSNumber numberWithInt:1949],[NSNumber numberWithInt:2020]];
numberArray = [numberArray sortedArrayUsingFunction:intSort context:nil];
NSLog(@"%@",numberArray);
//使用代码块比较,进行排序(和第2种方法感觉没啥区别啊),升序
NSArray* numberArrayAsc =[numberArray sortedArrayUsingComparator:^(id a,id b){
int v1 = [a intValue];
int v2 = [b intValue];
if(v1 > v2){
return NSOrderedDescending;
}else if(v1 < v2){
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}];
NSLog(@"%@",numberArrayAsc);
}
return 0;
}
程序输出
2015-12-02 20:39:09.500 NSArraySort[5534:380948] (
Android,
Java,
"Object-C"
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
2020,
2015,
1949
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
1949,
2015,
2020
)
Program ended with exit code: 0
最新文章
- Laravel Composer and ServiceProvider
- [收集]在iPhone桌面的应用程序图标右上角显示数字
- Advanced SQL
- 使用 gulp 搭建前端环境入门篇(转载)
- Tomcat 长连接与短连接性能测试
- 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
- Bug解决过程复盘
- hdu 2254 奥运
- hdu 1258 DFS
- C# Best Practices - Specify Clear Method Parameters
- jQuery内容过滤选择器与子元素过滤选择器用法实例分析
- javascript的ES6学习总结(第二部分)
- map-有序 multimap-可重复 unordered_map-无序
- sql注入2
- AJAX跨域问题以及解决思路(更新中)
- linux 关于时间日期date
- Asp.Net WebAPI及相关技术介绍(含PPT下载)
- postgresSQL主从流复制安装
- NOI导刊 2018河南郑州游记
- Linux网桥模式配置
热门文章
- [Codeforces 226E]Noble Knight&#39;s Path
- BZOJ 4044 Virus synthesis (回文自动机+dp)
- shell试题
- Linux下pyftplib简单的脚本
- linux下wps的字体缺失解决方法
- STM32 抢占优先级和响应优先级
- ArcEngine 一些实现代码
- [ES2018] Two ways to write for-await-of
- updatefile.sh - Linux下代码更新脚本
- uva_644暴力加字典树解法