Java remplacer compareTo, Long
J'ai une classe qui implémente l'interface Comparable. Dans cette classe j'ai besoin de remplacer méthode compareTo afin de trier les objets par Long
valeurs.
Ce que je ne sais pas est comment faire pour effectuer la comparaison du type Long.
J'obtiens le message d'erreur lorsque vous essayez de vérifier si la valeur est supérieure ou inférieure à une autre valeur de type Long.
Je sais que Long est l'objet de long, mais n'ont aucune idée de comment comparer deux Longues.
Exemple de Code:
public int compareTo(MyEntry<K, V> object) {
if (this.value < object.value)
return -1;
if (this.value.equals(object.value))
return 0;
return 1;
}
Message d'erreur:
operator < cannot be applied to V,V
if (this.value < object.value)
^
V, V est Long, Long
S'il vous plaît montrer votre code tentative et votre message d'erreur.
Il est
Avec un peu plus de détail, qui devrait être une réponse
Mise à jour post...
Votre mise en œuvre de compareTo semble être erronée. Post la Classe pour laquelle vous êtes à la mise en œuvre de compareTo.
Il est
compareTo
méthode dans Long
Avec un peu plus de détail, qui devrait être une réponse
Mise à jour post...
Votre mise en œuvre de compareTo semble être erronée. Post la Classe pour laquelle vous êtes à la mise en œuvre de compareTo.
OriginalL'auteur user1121487 | 2013-10-10
Vous devez vous connecter pour publier un commentaire.
Votre problème, c'est que
MyEntry<K, V>
ne pas dire au compilateur quel type d'Objet que vous êtes en train de comparer. Il ne sait pas que vous êtes en comparant les valeurs Longues. La meilleure façon de le faire est de ne pas s'inquiéter de ce type d'Objet que vous êtes en comparant (en supposant que votre objet implémente Comparable) en utilisant simplementmais si vous voulez le faire manuellement pour une raison quelconque, ce faire:
Je voudrais ajouter que, lorsque vous déclarez votre classe comme
implements Comparator
vous pouvez spécifier explicitementimplements Comparable<KeyClass, Long>
de sorte que vous n'avez pas à vous soucier de tout le castingsi
value
est unLong
, pourquoi ne serait-il pas la déléguer àLong
'scompareTo
(voir Adel réponse)?c'est ce que j'ai fait dans mon premier bloc de code... il y en a deux, là-haut, avez-vous lu l'ensemble de la réponse?
OriginalL'auteur StormeHawke
Simple non?
OriginalL'auteur Adel Boutros
Il ressemblerait à quelque chose comme ceci:
Par coïncidence, nous avons récemment fait un tutoriel sur les comparaisons en Java. Peut-être que cela peut vous aider.
OriginalL'auteur Vidya
Fonte de longs de Longs, puis utiliser la méthode compareTo de Long.
Java est bien structurée, presque tous les sortable Classe a méthode compareTo.
C'est une bonne Java pratique.
Ou Long.comparer(t1, t2) // depuis Java 1.7
OriginalL'auteur Kai Wang
Utilisation longValue() la méthode de comparaison des valeurs longues.
par exemple:-
OriginalL'auteur Scientist
Le long compareTo commande peut aider. La méthode compareTo renvoie une valeur entière pour vous donner une réponse quant à savoir si les longs sont égale, supérieure ou moins les uns que les autres.
OriginalL'auteur Sir Snowman