版本号的比较(用于升级判断):
比如:
1.1 与 1.2
1.1.1 与 1.1.2
1.1 与 1.1.2
工具类
public class VersionUtil {
/**
* 版本号比较
*
* @param version1
* @param version2
* @return
*/
public static int compareVersion(String version1, String version2) {
try {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");//转义
String[] version2Array = version2.split("\\.");
int index = 0;
// 获取最小长度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
// 循环判断每位的大小
while (index < minLen && (diff = Integer.parseInt(version1Array[index]) -
Integer.parseInt(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位数不一致,比较多余位数
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
} catch (Exception e) {
return 0;
}
}
}
参考String.compareTo()方法的比较方法:
public class TestVersion {
public static void main(String[] args) {
System.out.println(isNeedUpdate("1.1", "1.2"));
System.out.println(isNeedUpdate("1.1.1", "1.1.2"));
System.out.println(isNeedUpdate("1.1", "1.1.2"));
System.out.println(isNeedUpdate("1.2", "1.1.2"));
System.out.println(isNeedUpdate("2.1", "1.1.2"));
//true
//true
//true
//false
//false
}
/**
* 参考String.compareTo()方法
*/
public static boolean isNeedUpdate(String currentVersion, String anotherVersion) {
String[] v1 = currentVersion.split("\\.");
String[] v2 = anotherVersion.split("\\.");
int len1 = v1.length;
int len2 = v2.length;
int lim = Math.min(len1, len2);
int k = 0;
while (k < lim) {
String c1 = v1[k];
String c2 = v2[k];
if (Integer.parseInt(c1) != Integer.parseInt(c2)) {
return Integer.parseInt(c1) - Integer.parseInt(c2) < 0;
}
k++;
}
return len1 - len2 < 0;
}
}