A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潜伏 中级黑马   /  2013-11-20 17:16  /  1139 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在TreeSet集合使用中定义了一个比较器后,而TreeSet类型装的的是String类型。compare里面比较的的字符串的长度 的时候。为什么要写成reurn  new Integer (l1.length()) compareTo(new Integer(l2.length())
不懂得其实就是l1.length本身就是个Integer 类型,在new一个Integer类型不是重复吗?????

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

3 个回复

倒序浏览
l1.length()是一个int类型,在jdk1.5新特性中有一个自动装箱,但是提升是分场合的,这个场合不会自动装箱,所以还是int类型,自然要进行包装。
回复 使用道具 举报
如果不进行封装,也可以这样比较reurn  l1.length()-l2.length();
因为int是基本数据类型,不能调用compareTo方法,所以进行封装。
当把int类型的数据放进集合这种存放对象的容器中时,它才会自动装箱成Integer类型。
所以这里要手动封装。
回复 使用道具 举报
因为l1.length返回一个int型,在用CompareTo()方法进行比较时,要求两边的是对象类型,这里int型不能自动装箱只能手动进行用new Integer()吧int型包装成对象型在进行比较。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马