版本号比较 [java]

2023-11-14

原文地址: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;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

版本号比较 [java] 的相关文章

随机推荐

  • HCIA-Big Data华为认证大数据工程师在线课程笔记

    文章目录 一 简介 二 HDFS分布式文件系统 三 MapReduce分布式离线批处理和Yarn资源协调 四 Spark2 x基于内存的分布式计算 五 HBase分布式NoSQL数据库 HBase架构 关键流程和特性 FusionInsig
  • Linxu (Redhat/Centos)开机省略输入用户名、密码直接进GUI

    1 编辑 etc gdm custom conf为如下 GDM configuration storage daemon AutomaticLoginEnable true AutomaticLogin root TimedLoginEna
  • linux kernel5.* kworker+进程cpu持续高占用

    最近平台linux操作系统内核升级至5 版本后出现kworker 进程高占用 内核降至4 时没有问题 通过搜索相关资料规避方案如下 内核启动参数加入 usbcore autosuspend 1 禁用usb设备自动挂起 具体步骤 1 编辑 e
  • ESP32开发板手动更换外置的flash

    ESP32开发板手动更换外置的flash 实物板 风险提示 操作有风险 需谨慎 新手请勿模仿 第一步拿下屏蔽罩 用热风枪 360 吹下来的 第二步 更换flash芯片 ESP32 D0WDQ6芯片下方那个就是flash芯片了型号 25VQ3
  • Docker基本概念

    一 为什么使用容器 1 上线流程繁琐 开发 gt 测试 gt 申请资源 gt 审批 gt 部署 gt 测试等环节 2 资源利用率低 普遍服务器利用率低 造成过多浪费 3 扩容 缩容不及时 业务高峰期扩容流程繁琐 上线不及时 4 服务器环境臃
  • SpringBoot 集成fastJson

    第一步 添加fastjson 依赖
  • Flutter跨平台移动端开发丨封装网络请求框架 dio

    dio 框架介绍 A powerful Http client for Dart which supports Interceptors Global configuration FormData Request Cancellation
  • Windows下Anaconda及Python指令

    日常记录 一 CUDA 1 已安装CUDA版本查看 nvcc version or nvcc V 二 Anaconda 1 查看安装的所有环境 conda env list or conda info env 2 查看该环境下有那些库 co
  • 零基础学Python

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • Faster-RCNN算法详解

    Faster CNN结构图 以下是Faster RCNN的结构图 上图中的目标检测包含了包括region proposal 生成ROI feature extraction 特征提取网络 classification ROI分类 regre
  • 有C++基础如何直接上手QT?

    文章目录 一 QT的发展 二 支持平台 三 QT的版本 四 QT的安装与下载 五 QT的优点 六 创建Qt项目 6 2 手动创建 6 3 pro 文件 七 一个简单的Qt应用程序 一 QT的发展 1991年 Qt最早由奇趣科技开发 1996
  • h5第三方登录—微信登录

    第一步 用户同意授权 获取code 第二步 通过code换取网页授权access token 第三步 刷新access token 如果需要 第四步 拉取用户信息 需scope为 snsapi userinfo 检验授权凭证 access
  • 论文阅读_变分自编码器_VAE

    英文名称 Auto Encoding Variational Bayes 中文名称 自编码变分贝叶斯 论文地址 http arxiv org abs 1312 6114 时间 2013 作者 Diederik P Kingma 阿姆斯特丹大
  • 硬盘故障时如何强制关机:Input/output error

    如果硬盘可能会出现锁死或坏道的故障 会造成SHELL命令的失效 包括 reboot powoff shutdown 用正常的命令是没法完成重启的 执行这些命令 会出现如下IO报错 reboot bash sbin reboot Input
  • 【微信小程序-0基础入门】项目发布完整流程

    写在前面 上一节讲述了小程序的相关介绍以及账号注册 这一节讲述小程序发布的具体流程 目录 安装开发者工具 小程序项目发布流程 小程序代码的构成 项目结构 1 了解项目的基本组成结构 2 小程序页面的组成部分 小程序代码的构成 JSON 配置
  • Unity游戏开发之游戏动画(模型动画制作及导入)

    一 简单制作3D角色 在stream中下载Fuse软件 在Fuse中制作人物 导出模型为OBJ格式 注意 这里导出目录必须为英文路径 否则只能导出空的OBJ文件 压缩Obj文件为zip格式 打开Mixamo网站 https www mixa
  • 以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会

    6月30日 由国家广播电视总局指导 中国广电集团主办的中国广电数字化赋能大会在京召开 国家广播电视总局党组成员 副局长杨小伟 工信部总工程师赵志国 中国移动党组成员 副总经理高同庆等出席会议并致辞 中广电移动网络有限公司董事长宋起柱作主题报
  • Golang 程序测试框架

    注意事项 测试用例文件名必须以 test go结尾 如 person test go 测试用例函数必须以Test开头 比如person test go文件中的TestReStore 测试函数的形参必须是t testing T 一个测试用例文
  • stm32(SCCB)+ov7670摄像头输出图像程序

    一 简介 OV7670一般模块指低成本数字输出CMOS摄像头 其摄像头包含30w像素的CMOS图像感光芯片 3 6mm焦距的镜头和镜头座 板载CMOS芯片所需要的各种不同电源 电源要求详见芯片的数据文件 板子同时引出控制管脚和数据管脚 方便
  • 版本号比较 [java]

    原文地址 java版本号比较 思路 将版本号按点分割 并转成数字类型 放入list 取两个版本位数的最大数 如 1 0 1为3位 1 0 0 1为4位 将位数不够的版本进行补全 不够部分补成0 从第一位开始比较 出现大于情况返回1 出现小于