So vergleichen Sie Versionszeichenfolgen in Java genau
Der Vergleich von Versionsnummern in Java kann eine knifflige Aufgabe sein, insbesondere wenn die maximale Anzahl an Punkten erreicht ist Veröffentlichungen sind unbekannt. Während ein einfacher String-Vergleich mit „compareTo“ nicht ausreicht, ist eine benutzerdefinierte Lösung erforderlich, um diese Komplexität zu bewältigen.
Eine solche Lösung umfasst die Erstellung einer benutzerdefinierten Versionsklasse, die die Comparable-Schnittstelle implementiert. So geht es:
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; } // ... }
Die Version-Klasse besteht aus einem Konstruktor, der das Versionsformat validiert, und einer CompareTo-Methode, die zwei Instanzen basierend auf ihren Versionszeichenfolgen vergleicht. Die Methode „compareTo“ verarbeitet problemlos Nullwerte und teilt bei Nicht-Null-Werten die Versionszeichenfolgen in Teile auf und vergleicht sie einzeln.
Mit dieser benutzerdefinierten Klasse wird der Vergleich von Versionsnummern ganz einfach:
Version a = new Version("1.1"); Version b = new Version("1.1.1"); a.compareTo(b) == -1; // true
Diese Lösung führt zuverlässig Versionsvergleiche mit unterschiedlicher Anzahl von Point-Releases durch und gewährleistet so Genauigkeit und Konsistenz.
Das obige ist der detaillierte Inhalt vonWie implementiert man genaue Vergleiche von Versionszeichenfolgen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!