java實現版本比較


package com.hzxc.chess.server.util;

/**
 * Created by hdwang on 2018/3/19.
 * 版本比較工具類
 */
public class VersionCompareUtil {

    /**
     * 比較版本大小
     *
     * 說明:支n位基礎版本號+1位子版本號
     * 示例:1.0.2>1.0.1 , 1.0.1.1>1.0.1
     *
     * @param version1 版本1
     * @param version2 版本2
     * @return 0:相同 1:version1大於version2 -1:version1小於version2
     */
    public static int compareVersion(String version1, String version2) {
        if (version1.equals(version2)) {
            return 0; //版本相同
        }
        String[] v1Array = version1.split("\\.");
        String[] v2Array = version2.split("\\.");
        int v1Len = v1Array.length;
        int v2Len = v2Array.length;
        int baseLen = 0; //基礎版本號位數(取長度小的)
        if(v1Len > v2Len){
            baseLen = v2Len;
        }else{
            baseLen = v1Len;
        }

        for(int i=0;i<baseLen;i++){ //基礎版本號比較
            if(v1Array[i].equals(v2Array[i])){ //同位版本號相同
                continue; //比較下一位
            }else{
                return Integer.parseInt(v1Array[i])>Integer.parseInt(v2Array[i]) ? 1 : -1;
            }
        }
        //基礎版本相同,再比較子版本號
        if(v1Len != v2Len){
            return v1Len > v2Len ? 1:-1;
        }else {
            //基礎版本相同,無子版本號
            return 0;
        }
    }

    public static void main(String[] args) {
        String v1 = "1.0.1";
        String v2 = "1.0.2";
        String v2_1 = "1.0.2.1";
        String v2_2 = "1.0.2.2";
        String v3 = "1.0.3";

        System.out.println("v1>v1:"+compareVersion(v1,v1));
        System.out.println("v1>v2:"+compareVersion(v1,v2));
        System.out.println("v2>v1:"+compareVersion(v2,v1));
        System.out.println("v2_1>v1:"+compareVersion(v2_1,v1));
        System.out.println("v2_1>v2:"+compareVersion(v2_1,v2));
        System.out.println("v2_2>v2_1:"+compareVersion(v2_2,v2_1));
        System.out.println("v3>v2:"+compareVersion(v3,v2));
        System.out.println("v3>v2_2:"+compareVersion(v3,v2_2));

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM