2

请看一下:

我有一个排序集:

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 类只是一个数据类。

当我尝试将广告元素添加到 sortedset 时:

individualSortedSet.add(individual);

我收到以下运行时错误:

Exception in thread "main" java.lang.ClassCastException: Individual cannot be cast to java.lang.Comparable

我真的不明白为什么。我查看了以下链接,但我无法使其工作..

为什么在将元素添加到 TreeSet 时我没有得到类转换异常或其他东西

列表到 TreeSet 的转换产生:“java.lang.ClassCastException:MyClass 无法转换为 java.lang.Comparable”

4

1 回答 1

1

代码中有一个不同的 sortedList,定义如下:

SortedSet<Individual> individualSortedSet = new TreeSet<Individual>(); 

我没有看到我再次声明了它。这是正确的声明:

SortedSet<Individual> individualSortedSet = new TreeSet<Individual>(new FitnessComparator()); 
于 2013-11-14T08:48:29.247 回答