黑马程序员技术交流社区

标题: 求解comparator使用过程遇到的小问题,如下 [打印本页]

作者: 潜伏    时间: 2013-11-20 17:16
标题: 求解comparator使用过程遇到的小问题,如下
在TreeSet集合使用中定义了一个比较器后,而TreeSet类型装的的是String类型。compare里面比较的的字符串的长度 的时候。为什么要写成reurn  new Integer (l1.length()) compareTo(new Integer(l2.length())
不懂得其实就是l1.length本身就是个Integer 类型,在new一个Integer类型不是重复吗?????
作者: 雨过丶天已晴    时间: 2013-11-20 17:26
l1.length()是一个int类型,在jdk1.5新特性中有一个自动装箱,但是提升是分场合的,这个场合不会自动装箱,所以还是int类型,自然要进行包装。
作者: @ne_pie尒ce    时间: 2013-11-20 17:39
如果不进行封装,也可以这样比较reurn  l1.length()-l2.length();
因为int是基本数据类型,不能调用compareTo方法,所以进行封装。
当把int类型的数据放进集合这种存放对象的容器中时,它才会自动装箱成Integer类型。
所以这里要手动封装。
作者: hurryup    时间: 2013-11-20 20:37
因为l1.length返回一个int型,在用CompareTo()方法进行比较时,要求两边的是对象类型,这里int型不能自动装箱只能手动进行用new Integer()吧int型包装成对象型在进行比较。




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