版本号比较
public class Test {
public static void main(String[] args) throws Exception {
String a="1.5.0.22";
String b="1.5.21.2";
System.out.println(compareVersionNew(a,b));
}
public static int compareVersion(String v1, String v2) {
if (v1.equals(v2)) {
return 0;
}
String[] version1Array = v1.split("[._]");
String[] version2Array = v2.split("[._]");
int index = 0;
int minLen = Math.min(version1Array.length, version2Array.length);
long diff = 0;
while (index < minLen
&& (diff = Long.parseLong(version1Array[index])
- Long.parseLong(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
for (int i = index; i < version1Array.length; i++) {
if (Long.parseLong(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Long.parseLong(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
private boolean compareVersionNew(String version1, String version2) {
int v1 = version1.replace(".", "").length();
int v2 = version2.replace(".", "").length();
int max = Math.max(v1, v2);
if (v1 == max) {
v2 = (int) (Math.pow(10, (v1 - v2)) * Integer.parseInt(version2.replace(".", "")));
v1 = Integer.parseInt(version1.replace(".", ""));
}
if (v2 == max) {
v1 = (int) (Math.pow(10, (v1 - v2)) * Integer.parseInt(version1.replace(".", "")));
v2 = Integer.parseInt(version2.replace(".", ""));
}
return v1 - v2 >= 0;
}
}