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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章闽 中级黑马   /  2012-10-25 17:48  /  1985 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Treeset中 当add()方法加入第一个值后,后面用add()方法加入的值类型要和第一个相同,否则会出现异常,而Hashset不会
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Character(第一个add("sdf"),第二个add('d'))
为什么?

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 淡定

查看全部评分

2 个回复

倒序浏览
你在TreeSet里面放的应该是一个对象啊,好像不可以把char类型的数据放进去吧?
回复 使用道具 举报
TreeSet()构造方法
构造一个新的空 set,该 set 按照元素的自然顺序排序。插入该 set 的所有元素都必须实现 Comparable 接口。而且,所有此类元素必须是可相互比较的:为 set 中的任何元素 e1 和 e2 执行 e1.compareTo(e2) 时必须不抛出 ClassCastException。如果用户尝试将违背此约束的元素添加到 set 中(例如,用户试图将字符串元素添加到其元素为整数的 set 中),则 add(Object) 调用将抛出 ClassCastException。
像int数据类型和String数据类型,你根本没有办法说谁大谁小。一般情况下TreeSet都放同一类数据,如果是自己建的类对象的话,要么实现Comparable接口,要么就要实现Comparator接口。
但是HashSet的排序时通过hashCode比较。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马