Variablen Versionsnummern vergleichen

Die Strings an den Punkten in ein Array splitten und dann beide Arrays von links nach rechts durchlaufen und gucken an welcher Stelle der erste Unterschied vorhanden ist. Wenn du den ersten Unterschied ermittelt hast, guckste einfach, welche Zahl größer ist.
 
Die selbe Aufgabenstellung hatte ich vor kurzem auch:
https://stackoverflow.com/questions/198431/how-do-you-compare-two-version-strings-in-java

Hier meine Versionsklasse:

Java:
public class Version implements Comparable<Version>
{
    private String version;

    /**
     * Gibt den Versionsstring zurück
     * @return String
     */
    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;
    }

    @Override
    public boolean equals( Object that )
    {
        if ( this == that )
        {
            return true;
        }
        if ( that == null )
        {
            return false;
        }
        if ( this.getClass() != that.getClass() )
        {
            return false;
        }
        return this.compareTo( (Version) that ) == 0;
    }

    @Override
    public int hashCode()
    {
        int hash = 5;
        hash = 13 * hash + Objects.hashCode( this.version );
        return hash;
    }

    @Override
    public String toString()
    {
        return version;
    }
}
 

Zurück
Oben