版本号比较,获取最新版本号

需求是这样,版本号规则  xx.xx.xx.xx 其中x为0-9的数字,例1.0.10.11  1.0.10.9 其中1.0.10.11为最新版本号

先比较高位数字大小,依次类推

按规则比较对象大小,可以实现Comparable接口,重写比较规则,然后在比较对象进行排序

 1 public class DeviceVersion implements Comparable<Object>{
 2     private String module_version; // 模块版本号  格式 x.x.x.xx
 3
 4     public String getModule_version() {
 5         return module_version;
 6     }
 7
 8     public void setModule_version(String module_version) {
 9         this.module_version = module_version;
10     }
11
12
13     @Override
14     public int compareTo(Object object) {
15         if(this == object){
16             return 0;
17         }else if (object!=null && object instanceof DeviceVersion) {
18             //支持格式 xx.xx.xx.xx 的比较
19             DeviceVersion deviceVersion = (DeviceVersion) object;
20             String[] version1 = module_version.split("\\."); // 此处注意转义,split使用。和| 时,需要转义
21             String[] version2 = deviceVersion.getModule_version().split("\\.");
22             // 转成int进行比较
23             int value1 = Integer.parseInt(version1[0])*1000000+Integer.parseInt(version1[1])*10000+Integer.parseInt(version1[2])*100+Integer.parseInt(version1[3]);
24             int value2 = Integer.parseInt(version2[0])*1000000+Integer.parseInt(version2[1])*10000+Integer.parseInt(version2[2])*100+Integer.parseInt(version2[3]);
25             return value2 - value1;
26         }else{
27             return -1;
28         }
29
30     }
31 }

测试一下

public class LatestVersion {
    private static final Comparator<DeviceVersion> COMPARATOR = new Comparator<DeviceVersion>() {
        public int compare(DeviceVersion o1, DeviceVersion o2) {
            return o1.compareTo(o2);
        }
    };
    // 获取最新版本
    public static void main( String[] args ) {
        DeviceVersion deviceVersion1 = new DeviceVersion();
        deviceVersion1.setModule_version("2.0.0.1");
        DeviceVersion deviceVersion2 = new DeviceVersion();
        deviceVersion2.setModule_version("1.99.99.99");
        DeviceVersion deviceVersion3 = new DeviceVersion();
        deviceVersion3.setModule_version("2.0.0.11");
        List<DeviceVersion> deviceVersionList = new ArrayList<DeviceVersion>();
        deviceVersionList.add(deviceVersion1);
        deviceVersionList.add(deviceVersion2);
        deviceVersionList.add(deviceVersion3);
        Collections.sort(deviceVersionList,COMPARATOR);
        System.out.println(deviceVersionList.get(0).getModule_version());
    }

}

打印结果  2.0.0.11

时间: 2024-07-29 03:22:59

版本号比较,获取最新版本号的相关文章

.Net一个很有用的帮助类,包含获取获取浏览器版本号、 获取操作系统版本号、获取客户端IP地址、取客户端真实IP、获取公网IP、判断是否是IP格式

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tasks;using System.Web; namespace ZC.Common.Log{    class UserHelper    { #region 获取浏览器版本号 /// <summary>   

C#:通过Visual Studio项目预生成命令获取SVN版本号

之前有一个winfrom项目,想要通过获取SVN版本号作为程序的内部编译版本号.经过一系列研究,得出了一些经验,特总结成一篇博客. 方法一:通过SVN命令获取版本号 类似地,我在项目中添加了一个名为"Version_inf.bat"的用于生成版本号的批处理文件,并设置它的属性为始终复制到输出目录.代码如下: 1 svn info>SVN_Version.dll 2 findstr “Revision” SVN_Version.dll 这段脚本的意思是通过“svn info”命令获

【Android界面实现】SlidingMenu最新版本号使用具体解释

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在非常久之前的一篇文章中,简单的介绍了一下开源项目SlidingMenu控件的使用,这一篇文章,将比較具体的介绍最新版本号的SlidingMenu控件的用法. SlidingMenu的github地址:https://github.com/jfeinstein10/SlidingMenu 将SlidingMenu整合到自己的项目之中 我们在使用开源的项目之前,都须要先将项目作为资源引入到我们当前的项目之中

最新版本号cocos2d&amp;#173;2.0&amp;#173;x&amp;#173;2.0.2使用新资源载入策略!不再沿用-hd、-

?? 前段时间cocos2dx更新了最新版本号cocos2d-2.0-x-2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样的载入资源方式,对于图片名后加入-hd,-ipad,-ipadhd方式,当用户开启项目的高清视网膜后就能够默认寻找相应的资源.可是从cocos2d-2.0-x-2.0.2版本号開始,资源载入策略不在如此了.对跨平台整合不清楚的请看cocos2dx最新2.x版本号跨平台整合NDK+Xcode 最新资源

CSipSimple最新版本号

要使用CSipSimple有两种方法:第一种是不编译jni,另外一种是编译jni. 这里介绍的是第一种:不编译jni. 首先,用SVNclient检出CSipSimple源代码:svn checkou: http://csipsimple.googlecode.com/svn/trunk/ 检出完毕之后有:6个目录 然后把ActionBarSherlock和CSipSimple两个项目导入到Eclipse,取消其它项目的勾选项,仅仅留ActionBarSherlock和CSipSimple两个项

获取操作系统版本号

1 #include "windows.h" 2 #include "iostream" 3 4 void main(){ 5 DWORD dwIdThis=GetCurrentProcessId(); 6 7 DWORD dwVerReq=GetProcessVersion(dwIdThis); 8 WORD wMajorReq=(WORD)(dwVerReq>>16); 9 WORD wMinorReq=(WORD)(dwVerReq & 0

js 获取浏览器版本号

1.在web开发中,会常常让你推断当前使用的是那个浏览器及浏览器的那个版本号,依据浏览器版本号来调整CSS的样式, 使在web界面在各个浏览器展现达到最佳的效果,以下是获取当前浏览器的代码: getBrowserVersion:function(){ var agent = navigator.userAgent.toLowerCase(); var arr=[]; var Browser=""; var Bversion=""; var verinNum=&quo

Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本号的开发环境

2014-06-01 BaoXinjian In Capgemini 一.摘要 因为用户在调用Request时需输入很多参数,经过很多Form页面,如果想打印采购订单,发票,日记账时, 客户会要求在From中新增一个按钮,客户只需按这个按钮即可将采购订单进行输出,系统会自动调取采购订单页面上的数据,无需用户输入,实行自动化,增加用户交互性 一般这种需求有两种实现方式 通过custom.pll,用代码进行定制 通过form personalization,用设定进行定制 在调用程式时,一般会用到f

CSipSimple最新版本号(二)--加入视频功能

前面我们编译好了最新版本号的CSipSimple,并且測试已经能够打电话了.如今要把视频功能加上去. 不知道怎么编译的,能够看我的上一篇博文:CSipSimple最新版本号 我们先来看一下之前的项目是怎么样的 如今来加入视频,在我们最開始检出CSipSimple的时候,检出的文件夹有 我们要把CSipSimpleVideoPlugin里面的内容整合到CSipSimple项目里面,就能完毕视频功能.过程例如以下: 首先下载视频功能所须要的库:http://down.51cto.com/data/1