これを見てください:
私はソートセットを持っています:
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 要素を 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 にキャストできません」