Não tenho certeza de como implementar uma interface comparável em minha classe abstrata. Tenho o seguinte código de exemplo que estou usando para tentar entender:
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;
}
}
Eu tenho uma classe de teste que criará objetos do tipo Animal, no entanto, quero ter uma interface comparável dentro desta classe para que os anos de descoberta mais antigos sejam classificados acima do baixo. Não tenho ideia de como fazer isso.
java
comparable
Softey
fonte
fonte
Comparable
. Implemente o método que ele indica da maneira que ele instrui.Respostas:
Você apenas tem que definir isso
Animal implements Comparable<Animal>
ou sejapublic class Animal implements Comparable<Animal>
. E então você tem que implementar ocompareTo(Animal other)
método da maneira que você gosta.Usando esta implementação de
compareTo
, os animais com uma ordem superioryear_discovered
receberão ordens superiores. Espero que você tenha uma ideiaComparable
ecompareTo
com este exemplo.fonte
requires API 19
return ((Integer)this.level).compareTo(other.level);
Você precisa:
implements Comparable<Animal>
à declaração da classe; eint compareTo( Animal a )
método para realizar as comparações.Como isso:
fonte
Enquanto você estiver nele, sugiro lembrar alguns fatos importantes sobre os métodos compareTo ()
CompareTo deve ser consistente com o método equals, por exemplo, se dois objetos são iguais via equals (), compareTo () deve retornar zero, caso contrário, se esses objetos estiverem armazenados em SortedSet ou SortedMap, eles não se comportarão corretamente.
CompareTo () deve lançar NullPointerException se o objeto atual for comparado ao objeto nulo em oposição a equals () que retorna falso em tal cenário.
Leia mais: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
fonte
Implemente
Comparable<Animal>
interface em sua classe e forneça implementação deint compareTo(Animal other)
método em sua classe. Veja esta postagemfonte
Você precisaria implementar a interface e definir o método compareTo (). Para obter um bom tutorial, vá para - link de ponto de tutoriais ou MyKongLink
fonte
A alternativa possível do código-fonte do
Integer.compare
método que requerAPI Version 19
é:public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }
Esta alternativa não requer que você use
API version 19
.fonte
A classe Emp precisa implementar a interface Comaparable, portanto, precisamos substituir seu método compateTo.
fonte
Aqui está o código para implementar a interface comparável Java,
fonte
Use um comparador ...
fonte
Isso pode ser feito facilmente implementando uma classe pública que implementa Comparable. Isso permitirá que você use o método compareTo, que pode ser usado com qualquer outro objeto ao qual você deseja comparar.
por exemplo, você pode implementá-lo desta forma:
Acho que isso pode resolver seu propósito.
fonte