gpt4 book ai didi

java - 如果我实现了比较器,为什么会出现类转换异常?

转载 作者:行者123 更新时间:2023-11-30 11:26:07 25 4
gpt4 key购买 nike

请看这个:

我有一个排序集:

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

List to TreeSet conversion produces: "java.lang.ClassCastException: MyClass cannot be cast to java.lang.Comparable"

最佳答案

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

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

没看到我又声明了..这是正确的声明:

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

关于java - 如果我实现了比较器,为什么会出现类转换异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com