Java记录 -60- TreeSet抛出ClassCastException
2015-11-05 00:03
471 查看
TreeSet实现了SortedSet也实现了Set,但它不是随便一个对象都能存储:
放置第二个对象时会用第二对象和TreeSet里的对象进行比较,看是否重复;然而我们自己定义的Pepole没有指定排序规则,所以会抛出异常。
查看TreeSet的add方法可以发现其有这么一个提示:
如果指定对象无法与此 set 的当前元素进行比较
public class TreeSetTest { public static void main(String[] args){ TreeSet tree = new TreeSet(); tree.add(new Pepole("zhangsan")); tree.add(new Pepole("lisi")); System.out.println(tree); } } class Pepole{ int age; String name; public Pepole(String name){ this.name = name; } }执行上面的代码会得到下面的异常信息:
Exception in thread "main" java.lang.ClassCastException: my.set.Pepole cannot be cast to java.lang.Comparable at java.util.TreeMap.put(TreeMap.java:542) at java.util.TreeSet.add(TreeSet.java:238) at my.set.TreeSetTest.main(TreeSetTest.java:10)上面的异常出现在往TreeSet里放第二个对象时报的异常,放置第一个的时候没有问题。
放置第二个对象时会用第二对象和TreeSet里的对象进行比较,看是否重复;然而我们自己定义的Pepole没有指定排序规则,所以会抛出异常。
查看TreeSet的add方法可以发现其有这么一个提示:
ClassCastException-
如果指定对象无法与此 set 的当前元素进行比较
相关文章推荐
- 递归练习---控制台输入一整数,纵向输出(方式一)
- 基于spring mvc 的文件上传(二)之实现service的代码
- 基于spring mvc 的文件上传(三)之实现controller的代码
- Spring学习篇:AOP知识整理
- java动态代理(JDK和cglib)
- SpringMVC ajax请求406 错误解决方案
- 不使用XML配置SpringMVC
- springmvc 为什么不支持string到data参数的转换
- java值传递,类继承,static关键字
- RxJava操作符(八)Aggregate
- RxJava操作符(七)Conditional and Boolean
- RxJava操作符(六)Utility
- RxJava操作符(五)Error Handling
- RxJava操作符(四)Combining
- 12c weblogic安装 The OpenJDK JVM is not supported on this platform
- RxJava操作符(三)Filtering
- RxJava操作符(二)Transforming Observables
- java.lang.IllegalArgumentException: No bean specified
- leetcode 149:Max Points on a Line(java实现)细致分析
- Struts2.0 入门,namespace