java实现版本比较
package com.hzxc.chess.server.util; /** * Created by hdwang on 2018/3/19. * 版本比较工具类 */ public class VersionCompareUtil { /** * 比较版本大小 * * 说明:支n位基础版本号+1位子版本号 * 示例:1.0.2>1.0.1 , 1.0.1.1>1.0.1 * * @param version1 版本1 * @param version2 版本2 * @return 0:相同 1:version1大于version2 -1:version1小于version2 */ public static int compareVersion(String version1, String version2) { if (version1.equals(version2)) { return 0; //版本相同 } String[] v1Array = version1.split("\\."); String[] v2Array = version2.split("\\."); int v1Len = v1Array.length; int v2Len = v2Array.length; int baseLen = 0; //基础版本号位数(取长度小的) if(v1Len > v2Len){ baseLen = v2Len; }else{ baseLen = v1Len; } for(int i=0;i<baseLen;i++){ //基础版本号比较 if(v1Array[i].equals(v2Array[i])){ //同位版本号相同 continue; //比较下一位 }else{ return Integer.parseInt(v1Array[i])>Integer.parseInt(v2Array[i]) ? 1 : -1; } } //基础版本相同,再比较子版本号 if(v1Len != v2Len){ return v1Len > v2Len ? 1:-1; }else { //基础版本相同,无子版本号 return 0; } } public static void main(String[] args) { String v1 = "1.0.1"; String v2 = "1.0.2"; String v2_1 = "1.0.2.1"; String v2_2 = "1.0.2.2"; String v3 = "1.0.3"; System.out.println("v1>v1:"+compareVersion(v1,v1)); System.out.println("v1>v2:"+compareVersion(v1,v2)); System.out.println("v2>v1:"+compareVersion(v2,v1)); System.out.println("v2_1>v1:"+compareVersion(v2_1,v1)); System.out.println("v2_1>v2:"+compareVersion(v2_1,v2)); System.out.println("v2_2>v2_1:"+compareVersion(v2_2,v2_1)); System.out.println("v3>v2:"+compareVersion(v3,v2)); System.out.println("v3>v2_2:"+compareVersion(v3,v2_2)); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库