Java实现比较APP版本号大小

2023-11-09

实现代码如下:

/**
     * 比较APP版本号的大小
     * <p>
     * 1、前者大则返回一个正数
     * 2、后者大返回一个负数
     * 3、相等则返回0
     *
     * @param version1 app版本号
     * @param version2 app版本号
     * @return int
     */
    public static int compareAppVersion(String version1, String version2) {
        if (version1 == null || version2 == null) {
            throw new RuntimeException("版本号不能为空");
        }
        // 注意此处为正则匹配,不能用.
        String[] versionArray1 = version1.split("\\.");
        String[] versionArray2 = version2.split("\\.");
        int idx = 0;
        // 取数组最小长度值
        int minLength = Math.min(versionArray1.length, versionArray2.length);
        int diff = 0;
        // 先比较长度,再比较字符
        while (idx < minLength
                && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0
                && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {
            ++idx;
        }
        // 如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大
        diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
        return diff;
    }

已自测通过

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

Java实现比较APP版本号大小 的相关文章

随机推荐

  • 记录:Sharding-Jdbc 配置max.connections.size.per.query造成的死锁问题

    记录 Sharding Jdbc 配置max connections size per query造成的死锁问题 项目场景 版本 jdk11 sharding jdbc4 1 1 mysql8 0 分表 table表根据 主键id 水平分表
  • 52. N-Queens II

    Follow up for N Queens problem Now instead outputting board configurations return the total number of distinct solutions
  • 奇淫巧技,CompletableFuture 异步多线程是真的优雅

    一个示例回顾Future 一些业务场景我们需要使用多线程异步执行任务 加快任务执行速度 JDK5新增了Future接口 用于描述一个异步计算的结果 虽然 Future 以及相关使用方法提供了异步执行任务的能力 但是对于结果的获取却是很不方便
  • C++Protobuf的生成与使用

    编写 proto文件 syntax 表明protobuf的版本号 末尾不要忘了 package 表明生成的类对象位于哪一个命名空间 末尾不要忘了 每一个类属性后面的必须跟一个编号 且不能重复 syntax proto3 package Pr
  • react-router中不同路由使用相同组件重新渲染问题

    在项目中 会遇到相同的路由 可能需要使用相同的页面 容器组件 如果点不同的路由需要重新查询 但是发现没有重新进容器的渲染周期 代码如下 export default match gt
  • Android中R.java文件详解

    R java文件有两种 两种文件作用一样都是获取资源的引用 区别在于一个存放着我们写的项目中资源的引用 另一个存放着系统定义好的一些资源 1 1 项目的R java文件 先说第一种是项目编译出来的R java文件 我们平常所用的R layo
  • 视频教程-自然语言处理实战——LSTM情感分析-深度学习

    自然语言处理实战 LSTM情感分析 专注提供优质教学内容 CSDN就业班 39 00 立即订阅 扫码下载 CSDN程序员学院APP 1000 技术好课免费看 APP订阅课程 领取优惠 最少立减5元 订阅后 请点击此处观看视频课程 视频教程
  • import torchvision出错

    Traceback most recent call last File
  • 激光二极管驱动电路图大全(六款激光二极管驱动电路设计原理图详解) - 全文

    激光二极管驱动电路图大全 六款激光二极管驱动电路设计原理图详解 全文 来源 网络整理 作者 2018年03月01日 14 36 1 分享 订阅 关键词 驱动电路激光二极管 激光二极管驱动电路图 一 驱动电路图1 左 电路的基准电压不用常见的
  • word 插入图片偏右问题

    通常在word中插入图片 当图片较大时会向右边延伸出去 如下图 默认嵌入型 因为图片较大超出了纸张范围 绿色框 但是左侧又有很大空间 蓝色框 调整方法 方式一 可以点击图片 在四角手动拖动鼠标缩放图片大小 直到看起来左右适中 方式二 先在w
  • C++真的能兼容C吗?

    总结 C 虽然改造自C 但是二者并非完全兼容 且语法中存在一定差异 上述几点 并非C与C 全部差异 C 真的能兼容C吗 今天看到了网上说C是C 的子集 C 可以兼容C 这是真的吗 要弄明白这个问题 首先 先简单介绍一下这两个语言 C C语言
  • 【论文解读】滴滴智能派单-KDD2018 Large-Scale Order Dispatch in On-Demand Ride-Hailing

    Large Scale Order Dispatch in On Demand Ride Hailing Platforms A Learning and Planning Approach 一 简介 基于大量历史数据 构建一个大Q表 用于
  • ISP、IAP、DFU和bootloader

    这是嵌入式开发中常用的几个专业术语 其诞生的背景和其具体作用大概如下 在很久很久以前 那是8051单片机流行的时代 做单片机开发都需要一个专用工具 就是单片机的编程器 或者叫烧写器 说 烧 写一点不为过 当年的经典芯片AT89C51在编程时
  • selenium用法详解【从入门到实战】【Python爬虫】【4万字】

    跳转文末 获取实战源码与作者联系方式 共同学习进步 文章目录 简介 selenium安装 安装浏览器驱动 确定浏览器版本 下载驱动 定位页面元素 打开指定页面 id 定位 name 定位 class 定位 tag 定位 xpath 定位 c
  • 2023年工业信息安全技能大赛—岗位技能锦标赛通知

    点击星标 即时接收最新推文 一 锦标赛背景 为加速推进数字化 智能化 5G 大数据等新一代信息技术与制造业深度融合 提升工业信息安全行业学习人员的技能水平 结合装备制造产业发展需要 促进装备制造产业高质量发展 加快培养工业信息安全技能人才
  • SM.MS图床api调用

    第一步 注册sm ms账号 并获取API Access 第二步 HTML结构 我用的是vue
  • upload-labs大详解

    pass1 上传一个php一句话文件 记得改成php格式 发现不允许上传php类型的 只能上传jpg gif pngl的我们打算用burp抓包 先上传jpg的 然后用burp改成php的 放包后 找到它的存储位置 用蚁剑连接 成功连接 pa
  • python基础笔记(二)_pandas的基础语法

    数据分析工具包 Pandas 基础序列 一维数组 Series Series 是带有标签的一维数组 可以保存任何数据类型 轴标签统称为索引 index查看series索引 类型为rangeindex values查看series值 类型是n
  • Mysql之一行转多行(列转行)--- help_topic

    用到的知识点 substring index str delim count str 要处理的字符串 delim 分隔符 count 计数 例子 str www wikibt com substring index str 1 结果是 ww
  • Java实现比较APP版本号大小

    实现代码如下 比较APP版本号的大小 p 1 前者大则返回一个正数 2 后者大返回一个负数 3 相等则返回0 param version1 app版本号 param version2 app版本号 return int public sta