黑马程序员技术交流社区

标题: 集合框架中的一个小知识点不懂,哪位高手能给我说一下。 [打印本页]

作者: 李小锋    时间: 2012-12-13 20:48
标题: 集合框架中的一个小知识点不懂,哪位高手能给我说一下。
本帖最后由 李小锋 于 2012-12-14 09:03 编辑

return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
这个语句具体怎么实现的,请知道的解释一下
作者: 郭光明    时间: 2012-12-13 21:01
这个就使用的是Integer的compareTo方法,两个数的比较 ,从你上面的语句中如果s1的年龄等于s2的年龄 则return 0,s1的年龄大于s2的年龄则返回大于0的值,反之则返回小于0的数

作者: 黑马黄涛    时间: 2012-12-13 21:16
呵呵  这句话实质上就是return s1.getAge()-s2.getAge();

呵呵,这个就是实现Comparable接口的compareTo()方法,可以比较两个值,然后确定排序的顺序...
作者: 朝花夕拾    时间: 2012-12-13 21:39
首先。s1.getAge()获取获取到的是一个整型值,Integer(int value)    构造一个新分配的 Integer 对象,它表示指定的 int 值,在 compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。希望楼主能看懂!
作者: super_Xiong    时间: 2012-12-13 21:43
这是个偷懒写法,
实际是这样的
Integer s1 = new Integer();
Integer s2 = new Integer();
s1.geAge().compareTo(s2.getAge)
作者: 焦健    时间: 2012-12-13 22:13
整句代码的意思是这样的,使用Integer的构造方法创建一个Integer对象new Integer(s1.getAge(),
该对象调用Integer类中的compareTo方法,compareTo()方法传入一个Integer类型的
对象new Integer(s2.getAge();该对象也是通过Integer的构造方法建立的。
实现在数字上比较两个 Integer 对象,然后将比较的结果返回。
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;
如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值。
作者: 怪盗急得    时间: 2012-12-13 22:49
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));

首先看compareTo两边比较的是什么,是两个Integer对象,也就是int基本数据类型的包装类。为什么不直接把通过两个对象的getAge方法返回的两个int 值拿来比较呢?
其实直接比较两个对象的age属性值是可以的,但是相对上面这句代码比较复杂。
因为Integer类已经实现了Comparable接口(这个接口是让要进行比较的对象具备可比较性,主要通过实现CompareTo方法来自定义对象要比较的内容,从而让对象能够根据给定的内容来进行比较。),可以直接使用这个对象的compareTo方法,来对封装的基本数据进行比较。
当然最简单的代码还是return s1.getAge() - s2.getAge();
作者: Kevin123    时间: 2012-12-14 09:58
是这样的:public int compareTo(Integer anotherInteger)在数字上比较两个 Integer 对象。
如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值(有符号的比较)。
楼主应该明了了吧。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2