Je ne sais pas comment implémenter une interface comparable dans ma classe abstraite. J'ai l'exemple de code suivant que j'utilise pour essayer de comprendre:
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;
}
}
J'ai une classe de test qui créera des objets de type Animal, mais je souhaite avoir une interface comparable à l'intérieur de cette classe afin que les années de découverte plus anciennes soient plus élevées que faibles. Je n'ai aucune idée de la façon de procéder.
java
comparable
Softey
la source
la source
Comparable
. Implémentez la méthode qu'il vous indique de la manière dont il vous l'indique.Réponses:
Vous avez juste à définir cela
Animal implements Comparable<Animal>
iepublic class Animal implements Comparable<Animal>
. Et puis vous devez implémenter lacompareTo(Animal other)
méthode comme vous l'aimez.En utilisant cette implémentation de
compareTo
, les animaux avec un plus hautyear_discovered
seront classés plus haut. J'espère que vous avez l'idéeComparable
etcompareTo
avec cet exemple.la source
requires API 19
return ((Integer)this.level).compareTo(other.level);
Tu dois:
implements Comparable<Animal>
à la déclaration de classe; etint compareTo( Animal a )
méthode pour effectuer les comparaisons.Comme ça:
la source
Pendant que vous y êtes, je suggère de vous rappeler quelques faits clés sur les méthodes compareTo ()
CompareTo doit être cohérent avec la méthode equals, par exemple si deux objets sont égaux via equals (), compareTo () doit renvoyer zéro sinon si ces objets sont stockés dans SortedSet ou SortedMap, ils ne se comporteront pas correctement.
CompareTo () doit lancer NullPointerException si l'objet actuel est comparé à un objet nul par opposition à equals () qui retourne false dans un tel scénario.
En savoir plus: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
la source
Implémentez l'
Comparable<Animal>
interface dans votre classe et fournissez l'implémentation de laint compareTo(Animal other)
méthode dans votre classe. Voir cet articlela source
Vous devrez implémenter l'interface et définir la méthode compareTo (). Pour un bon tutoriel, allez à - Tutoriels point link ou MyKongLink
la source
L'alternative possible au code source de la
Integer.compare
méthode qui nécessiteAPI Version 19
est:public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }
Cette alternative ne vous oblige pas à l'utiliser
API version 19
.la source
La classe Emp doit implémenter l'interface Comaparable, nous devons donc remplacer sa méthode compateTo.
la source
Voici le code pour implémenter une interface java comparable,
la source
Utilisez un comparateur ...
la source
Cette chose peut facilement être effectuée en implémentant une classe publique qui implémente Comparable. Cela vous permettra d'utiliser la méthode compareTo qui peut être utilisée avec tout autre objet auquel vous souhaitez comparer.
par exemple, vous pouvez l'implémenter de cette manière:
Je pense que cela pourrait résoudre votre objectif.
la source