java – 为什么TreeSet抛出ClassCastException
在下面的代码中,我试图添加两个员工对象
Set<Employee> s = new TreeSet<Employee>(); s.add(new Employee(1001)); s.add(new Employee(1002)); 但结果是java.lang.ClassCastException: Exception in thread "main" java.lang.ClassCastException: Employee cannot be cast to java.lang.Comparable at java.util.TreeMap.put(TreeMap.java:542) at java.util.TreeSet.add(TreeSet.java:238) at MyClient.main(MyClient.java:9) 但是如果我改变了 Set<Employee> s = new TreeSet<Employee>(); s.add(new Employee(1001)); 要么 Set<Employee> s = new HashSet<Employee>(); s.add(new Employee(1001)); s.add(new Employee(1002)); 那么结果是成功也不例外.我在上面的代码中没有做任何类的转换活动.请帮我找出原因,并提出我的解决方案. 解决方法
员工必须实施
Comparable ,或者在创建
TreeSet 时需要
provide a comparator.
在
如果您不符合这些要求,排序集将不知道如何比较其元素,并且无法正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |