No estoy seguro de cómo implementar una interfaz comparable en mi clase abstracta. Tengo el siguiente código de ejemplo que estoy usando para intentar entenderlo:
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;
}
}
Tengo una clase de prueba que creará objetos de tipo Animal; sin embargo, quiero tener una interfaz comparable dentro de esta clase para que los años anteriores de descubrimiento tengan un rango más alto que bajo. Sin embargo, no tengo idea de cómo hacerlo.
java
comparable
Softey
fuente
fuente
Comparable
. Implemente el método que le indique de la forma que le indique.Respuestas:
Solo tienes que definir eso
Animal implements Comparable<Animal>
es decirpublic class Animal implements Comparable<Animal>
. Y luego tienes que implementar elcompareTo(Animal other)
método de la forma que más te guste.Usando esta implementación de
compareTo
, los animales con un valor más altoyear_discovered
se ordenarán más alto. Espero que se haga una idea deComparable
ycompareTo
con este ejemplo.fuente
requires API 19
return ((Integer)this.level).compareTo(other.level);
Necesitas:
implements Comparable<Animal>
a la declaración de clase; yint compareTo( Animal a )
método para realizar las comparaciones.Me gusta esto:
fuente
Mientras está en él, le sugiero que recuerde algunos datos clave sobre los métodos compareTo ()
CompareTo debe ser consistente con el método equals, por ejemplo, si dos objetos son iguales a través de equals (), compareTo () debe devolver cero; de lo contrario, si esos objetos se almacenan en SortedSet o SortedMap, no se comportarán correctamente.
CompareTo () debe lanzar NullPointerException si el objeto actual se compara con el objeto nulo en lugar de equals () que devuelve falso en tal escenario.
Leer más: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
fuente
Implemente la
Comparable<Animal>
interfaz en su clase y proporcione la implementación delint compareTo(Animal other)
método en su clase. Ver esta publicaciónfuente
Necesitaría implementar la interfaz y definir el método compareTo (). Para obtener un buen tutorial, vaya a: enlace de punto de tutoriales o MyKongLink
fuente
Una posible alternativa del código fuente del
Integer.compare
método que requiereAPI Version 19
es:public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }
Esta alternativa no requiere que la uses
API version 19
.fuente
La clase Emp necesita implementar una interfaz Comaparable, por lo que debemos anular su método compateTo.
fuente
Aquí está el código para implementar una interfaz comparable a Java,
fuente
Utilice un comparador ...
fuente
Esto se puede hacer fácilmente implementando una clase pública que implemente Comparable. Esto le permitirá utilizar el método compareTo que se puede utilizar con cualquier otro objeto con el que desee comparar.
por ejemplo, puede implementarlo de esta manera:
Creo que esto podría resolver tu propósito.
fuente