当前位置:首页 > Java技术 > Java 比较两个版本号的大小 (通用)

Java 比较两个版本号的大小 (通用)

2022年11月09日 22:38:33Java技术9
    /**
     * 版本号比较
     *
     * @param v1
     * @param v2
     * @return 0代表相等,1代表左边大,-1代表右边大
     * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1
     */
    public static int compareVersion(String v1, String v2) {
        if (v1.equals(v2)) {
            return 0;
        }
        String[] version1Array = v1.split("[._]");
        String[] version2Array = v2.split("[._]");
        int index = 0;
        int minLen = Math.min(version1Array.length, version2Array.length);
        long diff = 0;
        
        while (index < minLen
                && (diff = Long.parseLong(version1Array[index])
                - Long.parseLong(version2Array[index])) == 0) {
            index++;
        }
        if (diff == 0) {
            for (int i = index; i < version1Array.length; i++) {
                if (Long.parseLong(version1Array[i]) > 0) {
                    return 1;
                }
            }
            
            for (int i = index; i < version2Array.length; i++) {
                if (Long.parseLong(version2Array[i]) > 0) {
                    return -1;
                }
            }
            return 0;
        } else {
            return diff > 0 ? 1 : -1;
        }
    }
    

举例:

Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1

Utils.compareVersion("1.0.360","1.0.358_20180820090553")=1

Utils.compareVersion("1.0.358.2","1.0.358_20180820090553")=-1

Utils.compareVersion("1.0.0.2","1.0.1")=-1

作者:JackieZhengChina
来源链接:https://blog.csdn.net/admans/article/details/81865652

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68980.html

标签: Java版本
分享给朋友: