web-dev-qa-db-ja.com

Javaと同等のインターフェースを実装する方法

私はどのようにして同等のインターフェースを私の抽象クラスに実装するのかわからない。私は試してみて、頭の中で頭を動かすために使用している次のコード例を持っています。

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

Animal型のオブジェクトを作成するテストクラスがありますが、このクラス内に比較可能なインターフェイスがあり、古い発見が低いよりも上位になるようにします。私はこれについてどのように取り組むのかわからないけど。

93
Softey

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のアイデアを得られることを願っています。

145
user1983983

必要がある:

  • クラス宣言に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);
    }
}
34
MT0

あなたがその中にいる間、私はcompareTo()メソッドについてのいくつかの重要な事実を覚えておくことを勧めます

  1. CompareToはequalsメソッドと一致している必要があります。 2つのオブジェクトがequals()で等しい場合、compareTo()はそれ以外の場合はゼロを返す必要があります。そうでない場合、それらのオブジェクトがSortedSetまたはSortedMapに格納されていると、正しく動作しません。

  2. このようなシナリオでfalseを返すequals()とは対照的に、現在のオブジェクトがnullオブジェクトと比較される場合、CompareTo()はNullPointerExceptionをスローする必要があります。

続きを読む: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha

5
guest

あなたのクラスにComparable<Animal>インターフェースを実装し、あなたのクラスにint compareTo(Animal other)メソッドの実装を提供します。 この記事を参照

1
Sanjeev

あなたはインターフェースを実装してcompareTo()メソッドを定義する必要があるでしょう。よいチュートリアルは - チュートリアルポイントリンク または MyKongLink に行ってください。

1
Gyan

Integer.compareを必要とするAPI Version 19メソッドのソースコードからの可能な代替は以下のとおりです。

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

この代替方法ではありませんAPI version 19を使う必要があります。

0
recepinanc

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

}
0
Mahadev Mane

これは、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);
    }
}
0
Shiva