线程“main”中的异常 java.lang.ClassCastException:proj.Car 无法转换为 java.lang.Comparable

问题描述

我正在尝试创建类似 this 创建图表的教程,但遇到错误Exception in thread "main" java.lang.classCastException: proj.Car cannot be cast to java.lang.Comparable

汽车类

 Integer id;
 String model;
 String brand;
 float price;

Cars 类(均已实例化):

TreeMap<Integer,Car> m;
TreeMap<Car,LinkedList<Car>> adjList;

主要内容

for(Map.Entry<Integer,Car> entry : a.m.entrySet()){
             Car val = entry.getValue();
             LinkedList<Car> list = new LinkedList<Car>();
             a.adjList.put(val,list);
}

这会为 adjList 中的每个 Car 对象创建一个 m,但问题是错误。我尝试使用 instanceof 确保输入的变量类型相同,并且返回 true。所以我不确定错误来自哪里。

解决方法

TreeMap 是一个 SortedMap 实现,它需要它的键来实现 Comparable 接口以便对键进行排序。

所以我假设 Car 没有实现 Comparable。如果你添加这个实现,你会没事的。