java判断版本号大小,比较版本号大小

版本号比较

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(compareVersion(a,b));
	}
	
	/**
	 * 版本号比较
	 *
	 * @param v1
	 * @param v2
	 * @return 0代表相等,1代表左边大,-1代表右边大
	 * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1
	 */
	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;
		}
	}
}

你可能感兴趣的:(java,java,算法)