gpt4 book ai didi

java - 无法在我的程序中使用比较器

转载 作者:行者123 更新时间:2023-12-02 06:51:31 27 4
gpt4 key购买 nike

在此程序中,它没有识别compartor,我不想使用compareTo

class TestTreeSet
{
public static void main(String args[])
{
BuildObject build = new BuildObject();
TreeSet treeSet = new TreeSet( new Compared());
treeSet = build.sendAsTreeSet();
Iterator itr = treeSet.iterator();
while(itr.hasNext())
{
Obj object = (Obj) itr.next();
System.out.println(object.getName() + "\n " + object.getAge() + "\n "
+ object.getSalary());
}
}
}

这是比较器

class Compared implements Comparator
{
public int compare(Object a , Object b)
{
Obj one = (Obj) a;
Obj two = (Obj) b;
double salaryOne = one.getSalary();
double salaryTwo = two.getSalary();
int ageOne = one.getAge();
int ageTwo = two.getAge();
if( ageOne == ageTwo)
{
if(salaryOne > salaryTwo)
{
return -1;
}
else if(salaryOne < salaryTwo)
{
return 1;
}
else return 0;
}
else if(ageOne > ageTwo)
return -1;
else return 1;
}
}

问题是什么?它显示无法转换为 java.lang.comparable 异常

最佳答案

自从您使用

TreeSet treeSet = new TreeSet();

在您的 sendAsTreeSet 方法中,树集尝试对使用它们添加的元素 natural ordering 进行排序。 Witch impiles 对象的类必须实现 Compareable界面。

您应该将该行替换为

TreeSet treeSet = new TreeSet( new Compared());

主方法中的同一行可以删除。

关于java - 无法在我的程序中使用比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966414/

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