请看一下:
我有一个排序集:
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类只是一个数据类。
当我尝试将ad element添加到sortedset时:
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
答案 0 :(得分:1)
代码中有一个不同的sortedList,定义如下:
SortedSet<Individual> individualSortedSet = new TreeSet<Individual>();
我没有看到我再次宣布它。这是正确的声明:
SortedSet<Individual> individualSortedSet = new TreeSet<Individual>(new FitnessComparator());