?????漰???????????о????????????汾?????????????汾????????????????????????????compareTo?????????
????????????????汾?????ù???????????????????????÷?????????
????????汾???磺1.3.20.8??6.82.20160101??8.5a/8.5c???
??????ù??????????汾???????????????????汾?????汾??????汾???汾???????????????????????????з????С??
???????????????????汾?????????????????????int????double???????????δ???????????????????????8.5c??????汾???
???????????????????????????????????????????????????????????????λ????
???????汾???????????
/**
* ???汾????С??????????????????????????????????????????0
* @param version1
* @param version2
* @return
*/
public static int compareVersion(String version1?? String version2) throws Exception {
if (version1 == null || version2 == null) {
throw new Exception("compareVersion error:illegal params.");
}
String[] versionArray1 = version1.split("\.");//???????????????????"."??
String[] versionArray2 = version2.split("\.");
int idx = 0;
int minLength = Math.min(versionArray1.length?? versionArray2.length);//?С?????
int diff = 0;
while (idx < minLength
&& (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//???????
&& (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//???????
++idx;
}
//???????????С??????????????δ?????С????????λ????????汾?????
diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
return diff;
}
??????????? split ??????????????????????????"."("."???????????????κ??)???????"\."??????????????
?????????????????????飬??????????汾????????汾?????????λ????λ??????λ???????????????????????
???????????????????????汾???????????????????汾???и????????汾?????????????鳤???????汾??????
????????????????????????????????????汾???С?????????????????????????
?????? "9.9"?? "10.8.8.6" ?????????????????????????????С????????????????????????????汾9??10????λ?????????ó?????????
???????? "9.9b"?? "9.8a" ??????????????????int????double????????????
????????????