在编程的过程中,我们必不可少的会遇到排序问题。好在Java中,有些类的方法已经给排序提供了很好的解决办法了;另外实现某些能够实现排序的接口也可以达到排序的目的。当然了,你也可以直接写排序算法。不过在这一篇blog里,还是主要介绍已有的方法和接口。
首先当然是我们很熟悉的Arrays.sort()方法了。废话不多说,看代码:
-
importjava.util.*;
-
publicclassTestArraysSort{
-
finalstaticintARRAY_LENGTH=1000000;
-
publicstaticvoidmain(Stringargs[]){
-
int[]intArray=newint[ARRAY_LENGTH];
-
for(inti=0;i<ARRAY_LENGTH;i++)
-
intArray[i]=(int)(i+Math.random()*i);
-
longtimeFirst=System.currentTimeMillis();
- Arrays.sort(intArray);
-
System.out.println("Lasts:"+(System.currentTimeMillis()-timeFirst)/1000+"s");
- }
- }
运行结果是:
查看Java API文档,其实Arrays.sort()方法的参数很多,包括整形数组,字符型数组,Object型数组(也就是自定义的抽象类型的数组)。但是这个类必须实现java.lang.comparable接口,说明白点就是要实现这个类下面的抽象方法int compareTo(Object o)。以Collections.sort()为例,请看代码:
-
importjava.util.*;
-
classMarkimplementsComparable{
-
privateStringname;
-
privateStringcourse;
-
privatedoublemark;
-
publicMark(Stringname,Stringcourse,doublemark){
-
this.name=name;
-
this.course=course;
-
this.mark=mark;
- }
-
publicintcompareTo(Objecto){
- Markm=(Mark)o;
-
return(int)(this.mark-m.mark);
- }
-
publicStringtoString(){
-
return"("+name+"-"+course+"-"+String.valueOf(mark)+")";
- }
- }
-
publicclassTestCollectionsSort{
-
publicstaticvoidmain(Stringargs[]){
-
List<Mark>list=newArrayList<Mark>();
-
Markmark1=newMark("S1","Maths",68.5);
-
Markmark2=newMark("S1","Maths",78.5);
-
Markmark3=newMark("S1","Maths",62.5);
-
Markmark4=newMark("S1","Maths",98.5);
-
Markmark5=newMark("S1","Maths",82.5);
- list.add(mark1);
- list.add(mark2);
- list.add(mark3);
- list.add(mark4);
- list.add(mark5);
- System.out.println(list);
- Collections.sort(list);
- System.out.println(list);
- }
- }
运行结果:
-
[(S1-Maths-68.5),(S1-Maths-78.5),(S1-Maths-62.5),(S1-Maths-98.5),(S1-Maths-82.5)]
-
[(S1-Maths-62.5),(S1-Maths-68.5),(S1-Maths-78.5),(S1-Maths-82.5),(S1-Maths-98.5)]
如果你要按照不同的标准进行排序的话,还可以求助于另一个java.util.Comparator接口。例如File类是实现了Comaparable接口的,但是它是按照文件名进行排序的,下面这段代码实现了按文件大小和修改时间排序的功能。请看代码:
-
importjava.util.*;
-
importjava.io.*;
-
classFileComparator{
-
staticclassCompratorByLastModifiedimplementsComparator{
-
publicintcompare(Objecto1,Objecto2){
- Filefile1=(File)o1;
- Filefile2=(File)o2;
-
longdiff=file1.lastModified()-file2.lastModified();
-
if(diff>0)
-
return1;
-
elseif(diff==0)
-
return0;
-
else
-
return-1;
- }
-
publicbooleanequals(Objectobj){
-
returntrue;
- }
- }
-
staticclassCompratorBySizeimplementsComparator{
-
publicintcompare(Objecto1,Objecto2){
- Filefile1=(File)o1;
- Filefile2=(File)o2;
-
longdiff=file1.length()-file2.length();
-
if(diff>0)
-
return1;
-
elseif(diff==0)
-
return0;
-
else
-
return-1;
- }
-
publicbooleanequals(Objectobj){
-
returntrue;
- }
- }
- }
-
publicclassFileSort{
-
publicstaticvoidmain(Stringargs[]){
-
Filefile=newFile("C:\\Folder");
- File[]fileArray=file.listFiles();
-
System.out.println("SortedbyName:");
- Arrays.sort(fileArray);
-
for(inti=0;i<fileArray.length;i++)
- System.out.println(fileArray[i]);
-
System.out.println("SortedbySize:");
-
Arrays.sort(fileArray,newFileComparator.CompratorBySize());
-
for(inti=0;i<fileArray.length;i++)
- System.out.println(fileArray[i]);
-
System.out.println("SortedbyLastModifiedTime:");
-
Arrays.sort(fileArray,newFileComparator.CompratorByLastModified());
-
for(inti=0;i<fileArray.length;i++)
- System.out.println(fileArray[i]);
- }
- }
运行结果是:
- SortedbyName:
-
C:\Folder\1.txt
-
C:\Folder\2.txt
-
C:\Folder\3.txt
- SortedbySize:
-
C:\Folder\1.txt
-
C:\Folder\3.txt
-
C:\Folder\2.txt
- SortedbyLastModifiedTime:
-
C:\Folder\1.txt
-
C:\Folder\3.txt
-
C:\Folder\2.txt
分享到:
相关推荐
Acronis Backup:Acronis备份策略设计原理.docx
phpEasyVCS-2.0.zip
2023-04-06-项目笔记-第三百五十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.349局变量的作用域_349- 2024-12-18
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
用户管理: 能够完成用户基本信息录入的注册和用户基本信息的修改。 管理员管理: 能够完成管理员对网站的商品信息管理(商品添加、商品审查)、会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)的功能。 搜索功能: 能过电子商品的名称进行搜索。 查询功能: 能够通过查看购物车对所选商品进行确定、挑选。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
IO总结总结总结总结总结
系统能够对客户信息管理、订单管理、商品信息管理、供应商管理、库存管理,系统用户管理等信息提供存储、更新、查询、统计的功能。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
前台模块: 站内新闻:发布与视频教学相关的新闻和动态。 视频学习:提供视频教学内容,供用户学习。 在线留言:用户可以在线提交留言或反馈。 用户注册:允许新用户注册成为网站的会员。 在线论坛:提供一个在线讨论的平台。 资料下载:提供学习资料或其他相关文件的下载服务。 管理员模块: 系统用户管理:管理系统用户的账户信息。 注册用户管理:管理注册用户的资料和信息。 教师信息管理:管理教师的资料和信息。 站内新闻管理:管理网站新闻内容的发布和更新。 课程信息:管理课程的相关信息。 资料下载管理:管理可供下载的资料。 论坛管理:管理在线论坛的内容和用户互动。 注册用户模块: 教师资料修改:教师可以修改自己的个人信息。 作业发布管理:用户可以发布作业或相关任务。 在线资料下载:注册用户可以下载在线资料。 学生资料管理:学生可以管理自己的资料。 学生下载作业:学生可以下载教师发布的作业。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
汉普美的ERP简介、实施、应用.ppt
深圳混泥土搅拌站资金、现金、费用管理规定
98年的telnetBBS软件,配合worldgroup server使用(16位),是瀛海威时空客户端的英文原版。
5aaaaaaaaaaaaaaaaaaaaaa
这个项目是一个基础的Go微服务框架,适合作为微服务架构的学习项目。希望这个项目能帮助你入门Go语言的微服务开发!
此为报告样本,完整报告的框架结构
传送带中大块煤识别检测数据集,使用coco json格式对792张图片标注,标注图片和标注信息可参考博文:https://backend.blog.csdn.net/article/details/144513245
此工具能快速有效的修复系统缺失的DLL和DirectX文件
计算机组成原理课程设计(模型机).doc