JAVA 软件升级版本号比较
简单版本号比较:
{
private static class VersionStringComparator
implements Comparator<String>
{
public int compare(String s1, String s2){
if( s1 == null && s2 == null )
return 0;
else if( s1 == null )
return -1;
else if( s2 == null )
return 1;
String[]
arr1 = s1.split("[^a-zA-Z0-9]+"),
arr2 = s2.split("[^a-zA-Z0-9]+")
;
int i1, i2, i3;
for(int ii = 0, max = Math.min(arr1.length, arr2.length);
ii <= max; ii++){
if( ii == arr1.length )
return ii == arr2.length ? 0 : -1;
else if( ii == arr2.length )
return 1;
try{
i1 = Integer.parseInt(arr1[ii]);
}
catch (Exception x){
i1 = Integer.MAX_VALUE;
}
try{
i2 = Integer.parseInt(arr2[ii]);
}
catch (Exception x){
i2 = Integer.MAX_VALUE;
}
if( i1 != i2 ){
return i1 - i2;
}
i3 = arr1[ii].compareTo(arr2[ii]);
if( i3 != 0 )
return i3;
}
return 0;
}
}
public static void main(String[] ss){
String[] data = new String[]{
"2.0",
"1.5.1",
"10.1.2.0",
"9.0.0.0",
"2.0.0.16",
"1.6.0_07",
"1.6.0_07-b06",
"1.6.0_6",
"1.6.0_07-b07",
"1.6.0_08-a06",
"5.10",
"Generic_127127-11",
"Generic_127127-13"
};
List<String> list = Arrays.asList(data);
Collections.sort(list, new VersionStringComparator());
for(String s: list)
System.out.println(s);
}
}
</code>
<output>
1.5.1
1.6.0_6
1.6.0_07
1.6.0_07-b06
1.6.0_07-b07
1.6.0_08-a06
2.0
2.0.0.16
5.10
9.0.0.0
10.1.2.0
Generic_127127-11
Generic_127127-13
</output>
JAVA 软件升级版本号比较的更多相关文章
- 关于Java 软件工程师应该知道或掌握的技术栈
鄙人星云,今天突然想写这么一篇需要持续更新的文章,主要目的用于总结当前最流行的技术和工具,方便自己也方便他人. 更新时间:2018-10-23 09:26:19 码农职业路径图 码农入门职业路径图 J ...
- java 软件开发面试宝典
一. Java 基础部分........................................................................................ ...
- 【swupdate文档 三】SWUpdate: 嵌入式系统的软件升级
SWUpdate: 嵌入式系统的软件升级 概述 本项目被认为有助于从存储媒体或网络更新嵌入式系统.但是,它应该主要作为一个框架来考虑,在这个框架中可以方便地向应用程序添加更多的协议或安装程序(在SWU ...
- Eclipse Java SE升级Java EE
网上教程大多是提供了“http://download.eclipse.org/releases/ganymede/”地址,但是实际更新过程中会报错. 大致查询了一下,很可能是版本不匹配的问题,正确的更 ...
- flyway实现java 自动升级SQL脚本
flyway实现java 自动升级SQL脚本 为什么要用Flyway 在日常开发中,我们经常会遇到下面的问题: 自己写的SQL忘了在所有环境执行: 别人写的SQL我们不能确定是否都在所有环境执行过了: ...
- TODO:软件升级的那些事
TODO:软件升级的那些事 软件升级,指软件从低版本向高版本的更新.由于高版本常常修复低版本的部分BUG,所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验. 最近常 ...
- JLink软件升级到4.92之后,Jlink不能用了
JLink软件升级到4.92之后,Jlink不能用了 情景描述: Jlink软件升级到4.9 ...
- MTM量身定制系统 - 富友ERP产品 - 信息化推动服装行业管理软件升级
MTM量身定制系统 - 富友ERP产品 - 信息化推动服装行业管理软件升级 国内第一款量体定制管理系统 结合富友软件10年服装行业经验和多家大型量身定制企业管理经验,推出的 ...
- NSIS:制作软件升级安装包
原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生.在这种情况下,您可能就需要一个软件的升级安装包了. 现在,我们就来一步步把这个安装包做 ...
随机推荐
- NOIP2010提高组] CODEVS 1069 关押罪犯(并查集)
这道这么简单的题目还写了这么久.. 将每个会发生冲突的两人的怒气进行排序,然后从怒气大到小,将两个人放到不同监狱中.假如两人都已经被放置且在同一监狱,这就是答案. ------------------ ...
- RUP(Rational Unified Process)笔记整理
RUP,统一软件开发过程是一种面向对象且基于网络的程序开发方法论. RUP的思路:Implementing BestPractices ·迭代式开发 在软件开发的早期阶段就想完全.准确的捕获用户的需求 ...
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
等注册完成后网站就可以打开了. win2008下提示未能从程序集“System.ServiceModel, Version=3.0.0.0问题解决 在Windows Server 2008中的IIS服 ...
- linux所有信息查询网址
- Linux第三方源
由于版权等各方面原因,很多时候在基础安装完Linux后,满多软件并不包含在yum(对于Ubuntu可能是apt-get)源中. 因此可以去下载第三方源,安装下载第三方软件.当然,如果习惯了源代码编译安 ...
- 射频识别技术漫谈(26)——Felica的文件系统
Felica的文件系统使用“系统\域\服务\数据块”的结构,如下图所示.通过这种结构实现对卡片非易失性存储区的使用和操作. Fe ...
- 推荐一些socket工具,TCP、UDP调试、抓包工具 推荐一些socket工具,TCP、UDP调试、抓包工具
还记得我在很久很久以前和大家推荐的Fiddler和Charles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用.好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控. 假如有 ...
- IPhone多视图切换
处理IPhone多个view切换是我们常遇到的问题,接下来有个比较实用的方法: 而且还附有创建空项目,内存告急处理和动画效果的实现! 具体步骤: 1.创建一个空的项目,然后添加一个ViewContro ...
- hdu 1085 Holding Bin-Laden Captive! (母函数)
//给你面值为1,2,5的三种硬币固定的数目,求不能凑出的最小钱数 //G(x)=(1+x+...+x^num1)(1+x^2+...+x^2num2)(1+x^5+,,,+x^5num3), //展 ...
- CSS找到 (div+css请讲)
CSS 定位和浮动 CSS 定位和浮动提供了一些特性,使用这些属性,你可以建立栏布局,的重叠布局的一部分,并有一些.也可多年来完成通常需要使用的多个表格能力完成的任务. 定位的基本思路是非常easy. ...