【发布时间】:2013-11-14 16:55:51
【问题描述】:
请看这个:
我有一个排序集:
SortedSet<Individual> individualSortedSet = new TreeSet<Individual>(new FitnessComparator());
这是比较器:
import java.util.Comparator;
public class FitnessComparator implements Comparator<Individual> {
@Override
public int compare(Individual individual1, Individual individual2) {
if (individual1.getFitness() == individual2.getFitness())
return 0;
return (individual1.getFitness() > individual2.getFitness())? 1 : -1;
}
}
Individual 类只是一个数据类。
当我尝试将广告元素添加到排序集时:
individualSortedSet.add(individual);
我收到以下运行时错误:
Exception in thread "main" java.lang.ClassCastException: Individual cannot be cast to java.lang.Comparable
我真的不明白为什么。我查看了以下链接,但无法使其正常工作..
Why I'm not getting a class cast exception or some thing else when adding element to TreeSet
【问题讨论】:
-
你从哪一行得到异常?
-
@Kayaman 根据他的问题 - 在
individualSortedSet.add(individual); -
万一,你有没有其他
Individual类在这里混在一起? -
我刚刚意识到我使用的是不同的 SortedSet,并且没有添加“新的 FitnessComparator()”。 Intellij 将其更改为 而我没听懂!谢谢!它已修复 - 现在正在查看另一个错误:-/
-
对不起,下次我会仔细看看异常在哪一行..
标签: java classcastexception comparator sortedset