내 추상 클래스에 비교 가능한 인터페이스를 구현하는 방법을 모르겠습니다. 다음 예제 코드를 사용하여 내 머리를 둘러싼 다.
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 유형의 객체를 생성하는 테스트 클래스가 있지만이 클래스 내에 비슷한 인터페이스를 갖고 싶어서 오래된 발견의 순위가 낮음보다 높았습니다. 그래도 어떻게 해야할지 모르겠습니다.
답변
당신은 그 정의해야 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
주문을 받게됩니다. 난 당신의 아이디어를 얻을 희망 Comparable
과 compareTo
예제로합니다.
답변
다음을 수행해야합니다.
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);
}
}
답변
그 안에있는 동안 compareTo () 메서드에 대한 몇 가지 주요 사실을 기억하는 것이 좋습니다
-
CompareTo는 equals 메서드와 일치해야합니다. 예를 들어 두 객체가 equals ()를 통해 동일하면 compareTo ()는 0을 반환해야합니다. 그렇지 않으면 해당 객체가 SortedSet 또는 SortedMap에 저장되어 있으면 제대로 작동하지 않습니다.
-
이러한 시나리오에서 false를 반환하는 equals ()와 반대로 현재 객체가 null 객체와 비교되면 CompareTo ()는 NullPointerException을 발생시켜야합니다.
더 읽기 : http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
답변
Comparable<Animal>
클래스에서 인터페이스를 구현 하고 클래스에서 int compareTo(Animal other)
메서드 구현을 제공 합니다. 이 게시물보기
답변
인터페이스를 구현하고 compareTo () 메서드를 정의해야합니다. 좋은 튜토리얼을 보려면- 튜토리얼 포인트 링크
또는
MyKongLink로 이동하십시오.
답변
Integer.compare
필요한 메소드 의 소스 코드에서 가능한 대안 API Version 19
은 다음과 같습니다.
public int compareTo(Animal other) {
return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered);
}
이 대안 은를 사용할 필요 가 없습니다API version 19
.
답변
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);
}
}
}