博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java代码比较器下载_java版本号比较器
阅读量:5149 次
发布时间:2019-06-13

本文共 2083 字,大约阅读时间需要 6 分钟。

Version.java

package com.yyxk.family.test;

/**

* 版本号比较工具

*

* 思路来源于: https://github.com/hotoo/versioning/blob/master/versioning.js

*

* example

* * ##完整模式

* Version.of("v0.1.1").eq("v0.1.2"); // false

*

* ##不完整模式

* Version.of("v0.1").incomplete().eq("v0.1.2"); // true

*

*

* @author L.cm

* email: 596392912@qq.com

* site:http://www.dreamlu.net

* date 2015年7月9日下午10:48:39

*/

public class Version {

private static final String delimiter = "\\.";

// 版本号

private String version;

// 是否完整模式,默认使用完整模式

private boolean complete = true;

/**

* 私有实例化构造方法

*/

private Version() {}

private Version(String version) {

this.version = version;

}

/**

* 不完整模式

* @return {Version}

*/

public Version incomplete() {

this.complete = false;

return this;

}

/**

* 构造器

* @param {Version}

*/

public static Version of(String version) {

return new Version(version);

}

/**

* 比较版本号是否相同

*

* example:

* * Version.of("v0.3").eq("v0.4")

*

*

* @param version 字符串版本号

* @return {boolean}

*/

public boolean eq(String version) {

return compare(version) == 0;

}

public boolean gt(String version) {

return compare(version) > 0;

}

public boolean gte(String version) {

return compare(version) >= 0;

}

public boolean lt(String version) {

return compare(version) < 0;

}

public boolean lte(String version) {

return compare(version) <= 0;

}

/**

* 和另外一个版本号比较

* @param version

* @return {int}

*/

private int compare(String version) {

return Version.compare(this.version, version, complete);

}

/**

* 比较2个版本号

* @param v1

* @param v2

* @param complete 是否完整的比较两个版本

*

* @return (v1 < v2) ? -1 : ((v1 == v2) ? 0 : 1)

*/

private static int compare(String v1, String v2, boolean complete) {

if (v1.equals(v2)) {

return 0;

}

String[] v1s = v1.split(delimiter);

String[] v2s = v2.split(delimiter);

int v1sLen = v1s.length;

int v2sLen = v2s.length;

int len = complete

? Math.max(v1sLen, v2sLen)

: Math.min(v1sLen, v2sLen);

for (int i = 0; i < len; i++) {

String c1 = len > v1sLen || null == v1s[i] ? "" : v1s[i];

String c2 = len > v2sLen || null == v2s[i] ? "" : v2s[i];

int result = c1.compareTo(c2);

if (result != 0) return result;

}

return 0;

}

}

转载地址:http://xodnv.baihongyu.com/

你可能感兴趣的文章
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
C# RichTextBox 滚动条 滚动到最新行
查看>>
js编码
查看>>
BZOJ 1412 & 最小割
查看>>
【26】java的组合与继承
查看>>
web开发,我们是否应该更加Deep Inside了?
查看>>
springboot部署多个vue项目
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
TLS 1.0协议
查看>>
java递归的几种用法
查看>>
微信小程序 - 接口更新记录以及解决方案(2018/12/26)
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>
python安装win32api pywin32 后出现 ImportError: DLL load failed
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>