当前位置: 首页 > 知识库问答 >
问题:

如何实现Java可比接口?

卫念
2023-03-14

我不确定如何在我的抽象类中实现一个可比较的接口。我有下面的示例代码,我正在使用它来尝试和得到我的头脑周围:

public class Animal{
    public String name;
    public int yearDiscovered;
    public String population;

    public Animal(String name, int yearDiscovered, String population){
        this.name = name;
        this.yearDiscovered = yearDiscovered;
        this.population = population; }

    public String toString(){
        String s = "Animal name: "+ name+"\nYear Discovered: "+yearDiscovered+"\nPopulation: "+population;
        return s;
    }
}

我有一个测试类,它将创建动物类型的对象,但是我想在这个类中有一个类似的接口,这样更早的发现排名就会更高。不过,我不知道该怎么做。

共有3个答案

傅兴平
2023-03-14

当您使用compareTo()方法时,我建议您记住一些有关compareTo()方法的关键事实

>

CompareTo()必须抛出NullPointerExcture,如果当前对象与空对象进行比较,而不是在这样的场景中返回false的equals()。

阅读更多:http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3

那开济
2023-03-14

你需要:

  • 添加

这样地:

public class Animal implements Comparable<Animal>{
    public String name;
    public int year_discovered; 
    public String population; 

    public Animal(String name, int year_discovered, String population){
        this.name = name;
        this.year_discovered = year_discovered;
        this.population = population;
    }

    public String toString(){
     String s = "Animal name: "+ name+"\nYear Discovered: "+year_discovered+"\nPopulation: "+population;
     return s;
    }

    @Override
    public int compareTo( final Animal o) {
        return Integer.compare(this.year_discovered, o.year_discovered);
    }
}

段溪叠
2023-03-14

你只需要定义Animal

@Override
public int compareTo(Animal other) {
    return Integer.compare(this.year_discovered, other.year_discovered);
}

使用这种比较的实现,发现的年数更高的动物将得到更高的排序。我希望您能通过这个示例了解ComparablecompareTo

 类似资料:
  • 问题内容: 我不确定如何在我的抽象类中实现类似的接口。我有以下示例代码可用来尝试解决这个问题: 我有一个测试类,该类将创建Animal类型的对象,但是我希望在该类中具有一个可比的接口,以使发现的年纪高于低位。我不知道如何去解决这个问题。 问题答案: 您只需要定义即p。然后,您必须以自己喜欢的方式实现该方法。 使用的实现,具有较高级别的动物将获得更高的顺序。我希望你的想法和这个例子。

  • 重写Compariable接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而无需实现时,为什么还要实现可比较的接口呢。以以下座椅类别为例: 尽管我们没有实现可比接口,但上述工作仍然有效,那么我们为什么要实现它呢?

  • 我知道这些接口用于对集合中的对象进行排序。但我怀疑这两者的真正区别。我读到的一个事实是,如果要比较两个对象而不使用当前对象,请使用Compariable(此)。 但我的问题是即使使用比较器,我们也会比较相同的对象类型。 这里真正的区别是什么。我很困惑。假设下面的例子, 如果我使用比较器,我会让一个类实现比较器,而不是这个。年龄,它有人。年龄那么这里有什么不同呢? 我不知道Collections.s

  • 假设您有ClassA、ClassB、ClassC和InterfaceA。 ClassA和ClassB实现interfaceA,而classC包含一个列表

  • 我有一个主类——模拟器——它使用另外两个类——生产者和评估者。生产者产生结果,而评估者评估这些结果。模拟器通过查询生产者并将结果传递给评估器来控制执行流程。 Producer和Evaluator的实际实现在运行时已知,在编译时我只知道它们的接口。下面我将粘贴接口、示例实现和模拟器类的内容。 这段代码应该编译并运行。无论选择哪个生产者实现,都应该得到相同的结果(0.82)。 编译器在以下几个地方警告