java版本号比较

2023-10-27

public static int versionCompareTo(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;
}
思路:
1.将版本号按点分割,并转成数字类型,放入list
2.取两个版本位数的最大数,如:1.0.1为3位 1.0.0.1为4位
3.将位数不够的版本进行补全,不够部分补成0
4.从第一位开始比较,出现大于情况返回1,出现小于情况返回-1,后面的就不用再比较了,如果没有出现大于和小于的情况,那只剩下等于了,for循环走完,返回0

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

java版本号比较 的相关文章

随机推荐

  • vue、uniapp调试工具【vueDevTools】

    点击下载
  • 【GD32篇】CAN总线入门教程——实现数据收发

    本文主要介绍CAN总线的软件配置 1 简介 CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线 并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议 近年来 它具有的高可靠性和良好的错误检
  • 算法与数据结构可视化网站

    今天画B 树用到了 算法与数据结构可视化网站 https www cs usfca edu galles visualization Algorithms html
  • iOS自定义转场动画

    如果你在开发中遇到需求 需要实现各种各样的转场动画 那么你可以看看这篇文章 当然 本文并没有实现各种各样的花式转场动画 而是实现了一种思路 抛砖引玉 希望你在看了本文之后能举一反三 随心所欲的定制自己喜欢的转场动画 注意这里讲的实现仅仅支持
  • Python基础学习04--字符串

    注释 单行注释 gt 以井号 开头 可以单独行 也可以在某行代码后边 多行注释 块注释 gt 多行代码或者内容 以三个连续单引号或双引号开始和结束 中间任何内容都忽略 我写了这么多 会不会打印出来 print 第1个 Hello World
  • ctfshow RCE极限挑战 wp

    这五题都做出来 真的不容易呀 最终终于是在比赛结束以前全部做完了 拿到了十几块钱 是一个星期的早餐了 嘿嘿嘿嘿 哎 不过对于 自增的理解可以说是提升很多很多 这里主要讲的自增 主要详细讲解他是怎么用的 目录 基本 题目详解 RCE挑战1 R
  • python第五章课后答案加注释_Python自然语言处理第五章分类标注词汇_关于自然语言处理的问题...

    optioninfo dynamic ture static true simplifiedDisplay newEdition newCard ifIcon img link https img alicdn com tfs TB1XY8
  • 比较两个二叉树是否相同

    也许你看过书 也许你背过代码 都不重要 重要的是 你能将你看过的变成自己的想法 然后实现它 不在其他代码的阴影下活着 让你的代码舞动起来 也许代码可能看起来有点不简洁 思想 可以按照递归的思路进行 左子树是否相等 右子树是否相等进行遍历 b
  • Eth-Trunk链路聚合

    一 链路聚合原理 1 1 原理简述 链路聚合能够提高链路带宽 增强网络可用性 支持负载分担 链路聚合是把两台设备之间的多条物理链路聚合在一起 当做一条逻辑链路来使用 这两台设备可以是一对路由器 一对交换机 或者是一台路由器和一台交换机 一条
  • Stm32 简单实现软件调用bootloader

    最近做了个密封的设备 由于只有一个接口 该接口连接usb otg 没有串口芯片进行复位操作导致烧录相当麻烦 如果自己做IAP又会挤占那可怜的ram空间 受IAP原理触发 想到可以通过跳转的方式进入系统储存器 通过查阅手册可以发现BootLo
  • 数据库inset update返回值正常,但是数据却没有更新

    今天碰到了这件怪事 我找了好久没发现问题 从数据库用户权限到源码都看了 也没发现问题 愁了一天555 后来发现是加了事务没提交 心态崩了
  • @RabbitListener详解

    RabbitListener 是用于在 Spring AMQP 中消息监听的注解 它允许在 Spring 应用程序中声明消息监听器 在使用 RabbitListener 注解的方法上 可以接收来自 RabbitMQ 队列的消息 这些方法可以
  • 螺杆真空泵安装流程图_无油干式真空泵的选型

    无油干式真空泵有着空前的节能与环保优势 更代表未来泵业发展的一种趋势 而众多的干式无油真空泵有着不同真空参数和不同的功能区别 如何根据自身工艺特点选择那种干式无油真空泵的型号 就首先了解各种不同类型干式无油真空泵的选型知识 这样做出的选择才
  • 如何在群晖NAS中使用cpolar内网穿透

    如何在群晖nas中使用cpolar内网穿透 文章目录 如何在群晖nas中使用cpolar内网穿透 今天 我们来为大家介绍 如何在群晖系统中 使用图形化界面的cpolar cpolar经过图形化改造后 使用方法已经简便了很多 基本与其他应用软
  • vue3浏览器报错解决Uncaught runtime errors

    我们只需要在项目 vue config js 加上如下配置即可 module exports defineConfig devServer client overlay false
  • linux 内核启动参数

    Linux 内核引导选项简介 作者 金步国 版权声明 本文作者是一位开源理念的坚定支持者 所以本文虽然不是软件 但是遵照开源的精神发布 无担保 本文作者不保证作品内容准确无误 亦不承担任何由于使用此文档所导致的损失 自由使用 任何人都可以自
  • linux 读写锁应用实例

    使用读写锁实现四个线程读写一段程序的实例 共创建了四个新的线程 其中两个线程用来读取数据 另外两个线程用来写入数据 在任意时刻 如果有一个线程在写数据 将阻塞所有其他线程的任何操作 include
  • 服务器系统一键功能安装,一键安装服务器系统

    一键安装服务器系统 内容精选 换一换 公有云平台提供了一键式重置密码功能 弹性云服务器的密码丢失或过期时 如果您的弹性云服务器提前安装了一键式重置密码插件 则可以应用一键式重置密码功能 给弹性云服务器设置新密码 该方法方便 有效 建议您成功
  • OpenMV串口通讯详解

    官方教程 串口通讯上 串口通讯下 OpenMV的Uart类函数介绍 目录 材料准备 官方示例代码解析 UART 函数介绍 usart write 函数介绍 time sleep ms x 函数介绍 自己写的代码加深理解 usart any
  • java版本号比较

    public static int versionCompareTo String version1 String version2 version1 version1 null version1 replaceAll d version2