相关疑难解决方法(0)

为什么TreeSet会抛出ClassCastException?

我试图将两个'Employee'对象添加到TreeSet:

Set<Employee> s = new TreeSet<Employee>();
s.add(new Employee(1001));
s.add(new Employee(1002));
Run Code Online (Sandbox Code Playgroud)

但它会抛出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)
Run Code Online (Sandbox Code Playgroud)

但是,如果我只向TreeSet添加一个对象:

Set<Employee> s = new TreeSet<Employee>();
s.add(new Employee(1001));
Run Code Online (Sandbox Code Playgroud)

或者,如果我使用HashSet:

Set<Employee> s = new HashSet<Employee>();
s.add(new Employee(1001));
s.add(new Employee(1002));
Run Code Online (Sandbox Code Playgroud)

然后它成功了.为什么会发生异常,我该如何解决?

java collections exception set treeset

17
推荐指数
1
解决办法
3万
查看次数

标签 统计

collections ×1

exception ×1

java ×1

set ×1

treeset ×1