ホームページ >Java >&#&チュートリアル >Java で正確なバージョン文字列比較を実装するにはどうすればよいですか?

Java で正確なバージョン文字列比較を実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 07:39:03480ブラウズ

How to Implement Accurate Version String Comparisons in Java?

Java でバージョン文字列を正確に比較する方法

Java でのバージョン番号の比較は、特にポイントの最大数が異なる場合には難しい作業になることがあります。リリースは不明。 CompareTo を使用した単純な文字列比較では不十分ですが、この複雑さを処理するにはカスタム ソリューションが必要です。

そのようなソリューションの 1 つは、Comparable インターフェイスを実装するカスタム Version クラスの作成です。その方法は次のとおりです。

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;
    }

    // ...
}

Version クラスは、バージョン形式を検証するコンストラクターと、バージョン文字列に基づいて 2 つのインスタンスを比較する CompareTo メソッドで構成されます。 CompareTo メソッドは null 値を適切に処理し、null 以外の値の場合は、バージョン文字列を部分に分割して 1 つずつ比較します。

このカスタム クラスを使用すると、バージョン番号の比較が簡単になります。

Version a = new Version("1.1");
Version b = new Version("1.1.1");
a.compareTo(b) == -1; // true

このソリューションは、さまざまな数のポイント リリースでのバージョン比較を確実に処理し、精度と一貫性を確保します。

以上がJava で正確なバージョン文字列比較を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。