洞察探索open banking如何通过小程序容器技术助力金融企业实现数据安全和数字化转型
626
2022-10-26
APP版本更新中比较APP的版本号高低并返回最高版本
背景
版本号是非空字符串并且只包含数字和 . 字符。如1.2.33这个 '.' 字符不表示小数点,用于分隔数字序列。
方案一
对版本号进行两两比较,判断其大小,得出最高版本。
版本号的特点,假设版本号段数不固定,可能是三段,也可能是四段。每一段的数字位数也不固定,总之从高位往低位判断,数字大的版本号大。
package com.lingyejun.dating.chap11.toutiao;import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.stream.Collectors;/** * @Author: lingyejun * @Date: 2022/5/1 * @Describe: * @Modified By: */public class CompareVersionNumbers { public static int compareVersions(String version1, String version2) { String[] levels1 = version1.split("\\."); String[] levels2 = version2.split("\\."); int length = Math.max(levels1.length, levels2.length); for (int i = 0; i < length; i++) { Integer v1 = i < levels1.length ? Integer.parseInt(levels1[i]) : 0; Integer v2 = i < levels2.length ? Integer.parseInt(levels2[i]) : 0; // 对每一段的版本号从高位到低位进行判断 int compare = v1.compareTo(v2); // 如果当前段版本号相同,则继续比较下一段,若当前段能判断出版本高低则直接返回 if (compare != 0) { return compare; } } return 0; } public static void main(String[] args) { String version1 = "1.23.789"; String version2 = "1.33.6678"; int compare = compareVersions(version1, version2); System.out.println(compare); String version3 = "11.1.2"; List
方案二
App在开发过程中会有自己的版本控制,每次打完包时会标注此包对外发布的版本号,还有一个版本编码(数字类型)随着版本号的增加此数字也是递增的。我们可以在后台维护的时候把版本号和版本编码都维护进去。我们在选取最高版本的时候,直接查数据库select max(version_numer) from app_version;就可以直接得到最大的版本了。
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
作者:翎野君
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~