Я не уверен, как реализовать сопоставимый интерфейс в моем абстрактном классе. У меня есть следующий пример кода, который я использую, чтобы разобраться в нем:
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, однако я хочу иметь сопоставимый интерфейс внутри этого класса, чтобы ранние годы исследований были выше, чем низкие. Я понятия не имею, как это сделать.
java
comparable
Софтей
источник
источник
Comparable
. Реализуйте метод, который он вам говорит, так, как он вам говорит.Ответы:
Вы просто должны определить , что
Animal implements Comparable<Animal>
естьpublic class Animal implements Comparable<Animal>
. И тогда вы должны реализоватьcompareTo(Animal other)
метод так, как вам нравится.Используя эту реализацию
compareTo
, животные с более высоким рейтингомyear_discovered
будут получать более высокий заказ. Я надеюсь , что вы получите представление о том ,Comparable
иcompareTo
с этим примером.источник
requires API 19
return ((Integer)this.level).compareTo(other.level);
Тебе надо:
implements Comparable<Animal>
в объявление класса; иint compareTo( Animal a )
метод для выполнения сравнений.Как это:
источник
Пока вы в нем, я предлагаю вспомнить некоторые ключевые факты о методах compareTo ()
CompareTo должен согласовываться с методом equals, например, если два объекта равны через equals (), compareTo () должен возвращать ноль, в противном случае, если эти объекты хранятся в SortedSet или SortedMap, они не будут вести себя должным образом.
CompareTo () должен генерировать исключение NullPointerException, если текущий объект сравнивается с нулевым объектом, а не с equals (), которые возвращают false в таком сценарии.
Подробнее: 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.
источник
Вот код для реализации интерфейса, сопоставимого с Java,
источник
Используйте компаратор ...
источник
Это легко сделать, реализовав публичный класс, реализующий Comparable. Это позволит вам использовать метод compareTo, который можно использовать с любым другим объектом, с которым вы хотите сравнить.
например, вы можете реализовать это следующим образом:
Я думаю, это может решить вашу задачу.
источник