Assurez-vous de comparer le résultat Java compareTo avec 0

introduction

Une petite histoire rudimentaire sur le «compareTo» de Java. Je veux des gens qui disent: "Le résultat de" compareTo "est que vous ne savez pas lequel est tout de suite."

compareTo se compare toujours à 0

Le résultat de «Comparable # compareTo» doit toujours être comparé à «0». Vous pouvez voir le code comparé à «-1» ou «1», ce qui est incorrect.

Ce qui suit est extrait de Standard API JavaDoc (italiques ajoutés) fait)

Valeur de retour: ** Entier négatif ** si cet objet est inférieur à l'objet spécifié, ** Zéro ** s'il est égal, ** Entier positif ** s'il est supérieur

Comme mentionné ci-dessus, il n'y a aucune garantie que des valeurs fixes telles que «-1» et «1» seront renvoyées. (Bien qu'il soit souvent implémenté pour renvoyer «-1» ou «1»)

Exemple de code

Vous pouvez lire et écrire docilement en appelant «compareTo» sur le côté gauche de l'opérateur de comparaison [^ 1] et en écrivant «0» sur le côté droit.

compareTo


if (obj1.compareTo(obj2) == 0) {
  System.out.println("obj1 = obj2");
}

if (obj1.compareTo(obj2) != 0) {
  System.out.println("obj1 ≠ obj2");
}

if (obj1.compareTo(obj2) < 0) {
  System.out.println("obj1 < obj2");
}

if (obj1.compareTo(obj2) <= 0) {
  System.out.println("obj1 ≦ obj2");
}

if (obj1.compareTo(obj2) > 0) {
  System.out.println("obj1 > obj2");
}

if (obj1.compareTo(obj2) >= 0) {
  System.out.println("obj1 ≧ obj2");
}

à la fin

Si vous faites une comparaison approfondie avec «0», vous ne serez pas dérouté par le résultat de «compareTo».

[^ 1]: ==, <, etc.

Recommended Posts

Assurez-vous de comparer le résultat Java compareTo avec 0
Obtenez le résultat de POST en Java
[Java] Résumez comment comparer avec la méthode equals
Comparer les éléments d'un tableau (Java)
Sortie du livre "Introduction à Java"
Exprimons le résultat de l'analyse du code d'octet Java dans un diagramme de classes
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
Points à prendre en compte lors de l'écriture de Java
Calculer le score de similarité des chaînes de caractères avec JAVA
Comment afficher le résultat du remplissage du formulaire
[Java] Affiche le résultat de ffprobe -show_streams dans JSON et mappe-le à un objet dans Jackson
Java Bienvenue dans le marais des tableaux bidimensionnels
Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
Branchement conditionnel du résultat de l'instruction SQL pour n'en rechercher qu'une seule en Java
[Java] Comment obtenir l'URL de la source de transition
CI l'architecture des applications Java / Kotlin avec ArchUnit
Comment écrire Scala du point de vue de Java
[Java] Comment obtenir la valeur maximale de HashMap
Surveillez l'état interne des programmes Java avec Kubernetes
Vérifiez le comportement de Java Intrinsic Locks avec bpftrace
Connexion HTTPS avec Java au serveur de certificats auto-signé
Vérifiez le résultat de l'inférence de paramètre de type générique avec JShell
Java: utilisez Stream pour trier le contenu d'une collection
[Java] Éléments à prendre en compte lors de la sortie de FizzBuzz
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
Remplacez seulement une partie de l'hôte URL par java
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
[Java] Modifier le traitement en fonction de la situation avec le modèle de stratégie
Seul le flux de niveau supérieur peut être parallélisé avec Java Stream.
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
J'ai essayé de résumer les bases de kotlin et java
[Java] Le rapport de couverture n'a pas pu être créé en combinant la méthode par défaut de l'interface Cobertura +
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Commande pour vérifier le nombre et l'état des threads Java
[Java] Simplifiez la mise en œuvre de la gestion de l'historique des données avec Reladomo
Initialisation avec une chaîne vide vers une instance de type Java String
[Java] Pour connaître les informations de type des paramètres de type à l'exécution
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Éléments à prendre en compte lors de l'écriture de code en Java
Mémo pour écrire silencieusement la source qui semble utilisable et le résultat de la compilation execution-java
Comment dériver le dernier jour du mois en Java
[Rails] Où faire attention dans la description de la validation
Comparez Java 8 en option avec Swift
Réintroduction à Java for Humanities 0: Comprendre l'acte de programmation
Que ce soit pour faire du côté serveur au moment de la reconstruction du système avec Kotlin ou Java
Entrée dans la console Java
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
Lisez les données de Shizuoka Prefecture Point Cloud DB avec Java et essayez de détecter la hauteur de l'arbre.
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
[Java] Divers résumés joints aux chefs de classe et aux membres
Revenir au début, démarrer avec Java ② Instructions de contrôle, instructions de boucle
[Java1.8 +] Obtenez la date du jour × suivant avec LocalDate
Je veux revenir à l'écran précédent avec kotlin et java!
Les arguments Java à exécuter avec gradle run peuvent être spécifiés avec --args (depuis Gradle 4.9)