比较版本号大小

package com.exambner.utils;

import java.util.Arrays;

/**
 * 版本号比较工具类
 *
 * @Author: wangwang
 * @Date: 2023-01-09-17:05
 * @Description:
 */
public class VersionComparisonUtil {

    /**
     * 比较版本号
     *
     * @param version1 eg:2.3.4
     * @param version2 eg:2.3.4.1
     * @return
     */
    public static int comparisonVersionNumber(String version1, String version2) {
        //获取版本号1的长度
        int length1 = version1.split("\\.").length;
        //获取版本号2的长度
        int length2 = version2.split("\\.").length;
        //定义最大长度
        int maxLength = 0;
        //true代表version1长度最大。false代表version2长度最大.
        boolean flag = true;
        //如果version1的长度大于version2的长度,则最大长度为version1长度
        if (length1 > length2) {
            maxLength = length1;
        } else {////如果version2的长度大于version1的长度,则最大长度为version2长度
            maxLength = length2;
            flag = false;
        }
        if (flag) {
            //为最短的version补充长度,拼接.0
            for (int i = 0; i < maxLength - length2; i++) {
                version2 += ".0";
            }
        } else {
            //为最短的version补充长度,拼接.0
            for (int i = 0; i < maxLength - length1; i++) {
                version1 += ".0";
            }
        }
        //两个版本号去除小数点进行比较
        Integer versionNum1 = Integer.parseInt(version1.replace(".", ""));
        Integer versionNum2 = Integer.parseInt(version2.replace(".", ""));
        return versionNum1.compareTo(versionNum2);
    }

    /**
     * 比较版本号,获取最新的一个
     *
     * @param version eg:2.3.4,2.3.5,2.3.6
     * @return
     */
    public static String comparisonVersionNumber(String... version) {
        //获取根据分隔符拆分后最大的数组长度
        int maxLength = 0;
        for (int i = 0; i < version.length; i++) {
            int length = version[i].split("\\.").length;
            if (maxLength == 0) {
                maxLength = length;
            } else {
                maxLength = length > maxLength ? length : maxLength;
            }
        }
        //循环数组,补充元素长度为最大长度
        String[] versionCopy = Arrays.copyOf(version, version.length);
        for (int i = 0; i < versionCopy.length; i++) {
            int length = versionCopy[i].split("\\.").length;
            for (int j = 0; j < maxLength - length; j++) {
                versionCopy[i] += ".0";
            }
        }
        //获取最大元素的索引
        int maxIndex = 0;
        for (int i = 0; i < versionCopy.length; i++) {
            if (i != maxIndex) {
                int num = Integer.parseInt(versionCopy[i].replace(".", ""));
                int maxNum = Integer.parseInt(versionCopy[maxIndex].replace(".", ""));
                maxIndex = num > maxNum ? i : maxIndex;
            }
        }
        return version[maxIndex];
    }
}

方法调用:

public static void main(String[] args) {
        System.out.println(VersionComparisonUtil.comparisonVersionNumber("2.4.1", "2.3.1.1"));
        System.out.println(VersionComparisonUtil.comparisonVersionNumber("2.4.1", "2.3.1.1", "2.3.4", "2.3.1", "2.3.1", "2.3.1", "2.3.1", "2.3.1", "2.3.1", "2.3.1"));
        System.out.println(VersionComparisonUtil.comparisonVersionNumber("12.3", "11.2.3", "11.1.1","13.0"));
    }

输出结果:

1
2.4.1
13.0
posted @ 2023-01-10 02:06  Amireux-126  阅读(44)  评论(0)    收藏  举报