Comment comparer les chaînes de version avec précision en Java
Comparer les numéros de version en Java peut être une tâche délicate, surtout lorsque le nombre maximum de points les versions sont inconnues. Bien qu'une simple comparaison de chaînes à l'aide de compareTo soit insuffisante, une solution personnalisée est nécessaire pour gérer cette complexité.
L'une de ces solutions consiste à créer une classe Version personnalisée qui implémente l'interface Comparable. Voici comment procéder :
public class Version implements Comparable<Version> { private String version; public final String get() { return this.version; } public Version(String version) { if(version == null) throw new IllegalArgumentException("Version can not be null"); if(!version.matches("[0-9]+(\.[0-9]+)*")) throw new IllegalArgumentException("Invalid version format"); this.version = version; } @Override public int compareTo(Version that) { if(that == null) return 1; String[] thisParts = this.get().split("\."); String[] thatParts = that.get().split("\."); int length = Math.max(thisParts.length, thatParts.length); for(int i = 0; i < length; i++) { int thisPart = i < thisParts.length ? Integer.parseInt(thisParts[i]) : 0; int thatPart = i < thatParts.length ? Integer.parseInt(thatParts[i]) : 0; if(thisPart < thatPart) return -1; if(thisPart > thatPart) return 1; } return 0; } // ... }
La classe Version se compose d'un constructeur qui valide le format de la version et d'une méthode compareTo qui compare deux instances en fonction de leurs chaînes de version. La méthode compareTo gère gracieusement les valeurs nulles et, pour les valeurs non nulles, elle divise les chaînes de version en parties, en les comparant une par une.
En utilisant cette classe personnalisée, comparer les numéros de version devient simple :
Version a = new Version("1.1"); Version b = new Version("1.1.1"); a.compareTo(b) == -1; // true
Cette solution gère de manière fiable les comparaisons de versions avec un nombre variable de versions ponctuelles, garantissant ainsi précision et cohérence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!