package quant.rich.emoney.util; import java.util.Comparator; public class VersionComparator implements Comparator { public static VersionComparator INSTANCE = new VersionComparator(); @Override public int compare(String version1, String version2) { // 将版本号拆分为数字部分(以 '.' 为分隔符) String[] version1Parts = version1.split("\\."); String[] version2Parts = version2.split("\\."); // 找到较长的版本号长度 int length = Math.max(version1Parts.length, version2Parts.length); for (int i = 0; i < length; i++) { // 如果 version1Parts 或 version2Parts 长度不足,补齐为 0 try { int v1 = (i < version1Parts.length) ? Integer.parseInt(version1Parts[i]) : 0; int v2 = (i < version2Parts.length) ? Integer.parseInt(version2Parts[i]) : 0; // 比较版本号的每一部分 if (v1 < v2) { return -1; // version1 小于 version2 } else if (v1 > v2) { return 1; // version1 大于 version2 } } catch (NumberFormatException e) { // 转换数字失败的直接调用 String 的 compare String v1 = (i < version1Parts.length) ? version1 : ""; String v2 = (i < version2Parts.length) ? version2 : ""; return v1.compareTo(v2); } } // 如果各部分都相等 return 0; // version1 等于 version2 } public static void main(String[] args) { // 使用 Comparator 比较版本号 VersionComparator versionComparator = new VersionComparator(); // 示例版本号 String version1 = "1.2.3"; String version2 = "1.10.5"; // 比较两个版本号 int result = versionComparator.compare(version1, version2); if (result == 0) { System.out.println(version1 + " is equal to " + version2); } else if (result < 0) { System.out.println(version1 + " is less than " + version2); } else { System.out.println(version1 + " is greater than " + version2); } } }