我不知道如何实现可比的接口到我的抽象类。 我有我使用,试图让我的头围绕它下面的代码示例:
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
将得到有序更高。 我希望你的想法Comparable
和compareTo
这个例子。
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一些关键事实()方法
的CompareTo必须与equals方法如一致,如果两个对象通过平等(平等),还有的compareTo()必须返回零,否则,如果这些对象存储的SortedSet或SortedMap的,他们不会循规蹈矩。
的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?