版本号比较 [java]

原文地址:java版本号比较

思路:

  1. 将版本号按点分割,并转成数字类型,放入list
  2. 取两个版本位数的最大数,如:1.0.1为3位 1.0.0.1为4位
  3. 将位数不够的版本进行补全,不够部分补成0
  4. 从第一位开始比较,出现大于情况返回1,出现小于情况返回-1,后面的就不用再比较了,如果没有出现大于和小于的情况,那只剩下等于了,for循环走完,返回0
public class VersionCompareUtil {
	/**
	 * version1 > version2,返回1;反之,返回-1;相等,返回0
	 */
	public static int compare(String version1, String version2) {
		version1 = version1 == null ? "" : version1.replaceAll("[^\\d\\.]+", "");
		version2 = version2 == null ? "" : version2.replaceAll("[^\\d\\.]+", "");
		String[] version1Array = version1.split("\\.");
		String[] version2Array = version2.split("\\.");
		List<Integer> version1List = new ArrayList<Integer>();
		List<Integer> version2List = new ArrayList<Integer>();
		for (int i = 0; i < version1Array.length; i++) {
			version1List.add(Integer.parseInt(version1Array[i]));
		}
		for (int i = 0; i < version2Array.length; i++) {
			version2List.add(Integer.parseInt(version2Array[i]));
		}
		int size = version1List.size() > version2List.size() ? version1List.size() : version2List.size();
		while (version1List.size() < size) {
			version1List.add(0);
		}
		while (version2List.size() < size) {
			version2List.add(0);
		}
		for (int i = 0; i < size; i++) {
			if (version1List.get(i) > version2List.get(i)) {
				return 1;
			}
			if (version1List.get(i) < version2List.get(i)) {
				return -1;
			}
		}
		return 0;
	}
}
发布了67 篇原创文章 · 获赞 70 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/fukaiit/article/details/88898373