如何实现Java接口相媲美?如何实现Java接口相媲美?(How to implement the

2019-05-09 00:56发布

我不知道如何实现可比的接口到我的抽象类。 我有我使用,试图让我的头围绕它下面的代码示例:

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;
    }
}

我有一个测试类,将创建类型动物的对象,但是我想有这个类中的可比接口,使年长年发现排名比低点高出。 我对如何去这个问题,虽然不知道。

Answer 1:

你只需要定义一个Animal implements Comparable<Animal>public class Animal implements Comparable<Animal> 。 然后,你必须实现compareTo(Animal other)这样,你喜欢它的方法。

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

使用此实施compareTo ,动物具有较高year_discovered将得到有序更高。 我希望你的想法ComparablecompareTo这个例子。



Answer 2:

你需要:

  • 添加implements Comparable<Animal>到类声明; 和
  • 实施int compareTo( Animal a )的方法来执行比较。

像这样:

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);
    }
}


Answer 3:

当你在的话,我建议要记住的compareTo一些关键事实()方法

  1. 的CompareTo必须与equals方法如一致,如果两个对象通过平等(平等),还有的compareTo()必须返回零,否则,如果这些对象存储的SortedSet或SortedMap的,他们不会循规蹈矩。

  2. 的CompareTo()必须抛出NullPointerException如果当前对象得到比较空的对象,而不是equals()方法,其在这样的情况下返回false。

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



Answer 4:

Implement Comparable<Animal> interface in your class and provide implementation of int compareTo(Animal other) method in your class.See This Post



Answer 5:

您需要实现接口和定义的compareTo()方法。 对于一个很好的教程去- 教程点的链接或MyKongLink



Answer 6:

从源代码可能的替代Integer.compare方法需要API Version 19是:

public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }

这种替代并不要求您使用API version 19



Answer 7:

EMP类需要实现Comaparable接口,所以我们需要重写它的compateTo方法。

import java.util.ArrayList;
import java.util.Collections;


class Emp implements Comparable< Emp >{

    int empid;
    String name;

    Emp(int empid,String name){
         this.empid = empid;  
         this.name = name;

    }


    @Override
    public String toString(){
        return empid+" "+name;
    }

    @Override
    public int compareTo(Emp o) {

     if(this.empid==o.empid){
       return 0; 
     } 
     else if(this.empid < o.empid){
     return 1;
     }
     else{
       return -1;
     }
    }
}

public class JavaApplication1 {


    public static void main(String[] args) {

    ArrayList<Emp> a= new ArrayList<Emp>();

    a.add(new Emp(10,"Mahadev"));
      a.add(new Emp(50,"Ashish"));
      a.add(new Emp(40,"Amit"));
      Collections.sort(a);
      for(Emp id:a){
      System.out.println(id);
      }
    }

}


Answer 8:

下面就来实现Java可比接口的代码,

// adding implements comparable to class declaration
public class Animal implements Comparable<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;
    }

    @Override
    public int compareTo(Animal other)  // compareTo method performs the comparisons 
    {
        return Integer.compare(this.year_discovered, other.year_discovered);
    }
}


Answer 9:

使用比较...

    public class AnimalAgeComparator implements Comparator<Animal> {

@Override
public int compare(Animal a1, Animal a2) {
  ...
}
}


Answer 10:

这个东西可以很容易地通过实施实现Comparable的公共类来完成。 这将允许您使用compareTo方法可以与到要比较的任何其他对象使用。

例如,你可以用这种方式实现:

public String compareTo(Animal oth) 
{
    return String.compare(this.population, oth.population);
}

我想,这可能会解决你的目的。



文章来源: How to implement the Java comparable interface?