比较版本号大小
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

浙公网安备 33010602011771号