java中的排序方法,Java中的排序比较方式:自然排序和比较器排序

这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的“大小”呢?这样的比较 stu1 > stu2 显然是不可能通过编译的。为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Comparable 和 java.util.Comparator 。

一、自然排序:java.lang.Comparable

Comparable 接口中只提供了一个方法: compareTo(Object obj) ,该方法的返回值是 int 。如果返回值为正数,则表示当前对象(调用该方法的对象)比 obj 对象“大”;反之“小”;如果为零的话,则表示两对象相等。下面是一个实现了 Comparable 接口的 Student 类:

public class Student implements Comparable {

private int id;

private String name;

public Student() {

super();

}

@Override

public int compareTo(Object obj) {

if (obj instanceof Student) {

Student stu = (Student) obj;

return id - stu.id;

}

return 0;

}

@Override

public String toString() {

return "";

}

}

Student 实现了自然排序接口 Comparable ,那么我们是怎么利用这个接口对一组 Student 对象进行排序的呢?我们在学习数组的时候,使用了一个类来给整型数组排序: java.util.Arrays 。我们使用 Arrays 的 sort 方法来给整型数组排序。翻翻 API 文档就会发现, Arrays 里给出了 sort 方法很多重载形式,其中就包括 sort(Object[] obj) ,也就是说 Arryas 也能对对象数组进行排序,排序过程中比较两个对象“大小”时使用的就是 Comparable 接口的 compareTo 方法。

public class CompareTest {

public static void main(String[] args) {

Student stu1 = new Student(1, "Little");

Student stu2 = new Student(2, "Cyntin");

Student stu3 = new Student(3, "Tony");

Student stu4 = new Student(4, "Gemini");

Student[] stus = new Student[4];

stus[0] = stu1;

stus[1] =

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ImageView缩放选项

ImageView.ScaleType 将图片边界缩放到所在view边界时的缩放选项。 Options for scaling the bounds of an image to the bounds of this view. 不同选项含义 CENTER 居中,不缩放。 Center the image in the view, but perform no scaling. CENTER_CROP 居中&#x…

css命名_CSS命名约定将节省您的调试时间

css命名I have heard lots of developers say they hate CSS. In my experience, this comes as a result of not taking the time to learn CSS.我听到很多开发人员说他们讨厌CSS。 以我的经验,这是因为没有花时间学习CSS。 Korean ??韩文?? 알림: 한국인 독…

电脑删除快捷键_可能是知乎最有用的 Windows 快捷键学习指南。

在任何地方搜索“快捷键的使用”,你都能找到无数的列表清单。但你应该不会专门去对照一个个的表单,企图把所有快捷键全部掌握吧?经过三年左右的总结和视频制作,Topbook 大概产出了 20 支左右的快捷键、快捷操作及应用等相关的视频…

java自动依照日期建表,脚本根据一个表中的日期字段填充每月汇总表

你想在这里做两件事 . 我假设您正在使用Oracle(因为您正在使用Java) .首先,您希望对每个用户的每日交易进行分组 .创建一个名为 tempTable 的临时表 .使用 to_char(currentdate, yyyy/mm/dd) 对它们进行分组 .INSERT INTO tempTableSELECTuserid,resourceid,doc_nam…

算法专题 普及组【2008】三3 C++版

转载于:https://www.cnblogs.com/qilinart/articles/5914850.html

linux用户修改用户shell

要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false # usermod -s /usr/sbin/nologin username 或者 # usermod -s /bin/false username /bin/false/bin/false什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录…

【覆盖安装】通用测试点

需要xmind文档请留言将会私发。 转载于:https://www.cnblogs.com/syw20170419/p/10457600.html

instagram架构_如何创建像Instagram这样的照片共享应用程序:基本知识。

instagram架构by Dmytro Brovkin由Dmytro Brovkin 如何创建像Instagram这样的照片共享应用程序:基本知识。 (How to create a photo sharing app like Instagram: the basics.) After two centuries of rapid development, photography has come a long way from b…

菜鸟裹裹电脑版_【绵阳最新转让】3500低价出售家用制氧机!东芝i5笔记本电脑、索尼微单相机、联想笔记本电脑、奶茶店、服装店转让......

转换价值,传承梦想西蜀网让你淘好物~3500出售鱼跃家用制氧机,带雾化全新鱼跃152021/9F_5W型家用制氧机,带雾化。正规医疗器械公司买的,有小票,买到只用了一次,买成4382现低价转让。联系电话:邓女…

认识软件性能测试10大误区

曾经我们帮助客户进行软件性能测试的时候,客户不解的问,不是必须通过功能测试后才可以测试性能吗?可能有很多人会存在这样的疑问,在这里,我们的多位专家根据多年经验总结出性能测试的10大误区,希望能给大家…

mac php oracle11g,Oracle11G函数整理

返回字符的字符函数 1、CHR(n) [n为正整数,如果ngt;256,就去MOD(n,256)] select CHR(65) a1,CHR(67)||CHR(65)||CHR(84) a2 FR返回字符的字符函数1、CHR(n) [n为正整数,如果n>256,就去MOD(n,256)]2、CONCAT(ch1,ch2) 拼接字符串…

软工_个人博客作业3

PART1 博文阅读感想 十几篇博客一气读下来,有一个词一直萦绕在我的脑海里——紧张!紧张!还是紧张! 首先这紧张来自于自己的学习方面。作为计算机系的科班出身,当然与生俱来就有一种优越感——我们是专业的,…

Linux环境中配置环境变量无效

1.在Linux系统中的【 ~/.baserc 】文件与【 /etc/profile 】配置环境变量后(可以使任意环境变量)无效的现象,如下为解决办法: 使用命令: 1 vim ~/.zshrc 在 【# User configuration】下添加环境变量; 如图说明: 2.也可…

手机能打开的表白代码_手机拍照还能加文字?打开这个自带按钮,一键就能添加方便...

手机拍照还能文字?打开这个自带按钮,一键就能添加方便我们日常生活中,经常会在朋友圈里面看到,这样的图片,不仅图片好看,上面还带有精美的文字,里面还添加了时间、地点、天气,在配上…

如何使create-react-app与Node Back-end API一起使用

This is a very common question among newer React developers, and one question I had when I was starting out with React and Node.js. In this short example I will show you how to make create-react-app work with Node.js and Express Back-end.这在新的React开发人…

Spring Cloud Eureka 入门 (二)服务提供者详解

2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “优秀不是过去是一种心态” 「Spring Cloud Eureka 入门系列」Spring Cloud Eureka 入门 (一…

题解 CF682C 【Alyona and the Tree】

简单搜索题,我们每找到一组不满足题目给出条件的点和边就将其整个子树删除,然后最终答案加上该子树的大小即可。注意,搜索的时候如果当前的边权和sum已经为负了,应该将其改为0(可以想想为什么) 注&#xff…

现在mfc的现状如何_天玑云客:微信代运营现在什么现状?如何挑选合适的代运营公司?...

来源:天玑云客综合整理团队成员均来自“中国房地产策划代理百强企业”TOP10以及”中国企业500强“TOP20企业并担任重要职位。和你一起聊运营、产品、技术研发、房地产以及各种新兴行业有哪些有趣的营销玩法。由于微信公众号/小程序的影响力日益增强,以及…

第五百一十八天 how can I 坚持

闲是真能闲出病来,无名的焦虑啊。不想这样。 天越来越冷了。后天就放假了,有点小激动,这一天天的。 今晚没玩游戏,看了会《微微一笑很倾城》,只能是崇拜那些玩游戏好的,就是玩不好,哎。。。 睡觉…

第三方登录 人人php,人人网第三方登录接口方案

之前闲暇有空,就去了解了下人人网的第三方登录的接口,呵呵..发布想了解的都了解下.一. REST接口模式使用HTTP post 协议or HTTP get 协议发出请求.HTTP 协议同REST服务器通信.Java Struts 1.2 .do 的模式请求.代码:1.URL编码的示例代码(java): value java.net.UR…