欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 實現(xiàn)比較版本號功能

 更新時間:2016年07月07日 11:00:36   投稿:lqh  
本篇文章主要介紹了java 中涉及到客戶端的系統(tǒng)經常需要用到比較版本號的功能,并附小示例,希望能幫助需要的小伙伴

涉及到客戶端的系統(tǒng)中經常需要用到比較版本號的功能,但是比較版本號又不能完全按照字符串比較的方式去用compareTo之類的方法;

這就需要我們總結版本號的通用規(guī)則,設計一個比較算法并封裝成通用方法來使用:

通常版本號如:1.3.20.8,6.82.20160101,8.5a/8.5c等;

通用規(guī)則就是,先將版本字符串按照點號分割,然后主版本與主版本比較、此版本與此版本比較,如此按序一級一級往后比較,直到有分出大?。?/p>

值得注意的是,很多比較版本號的方法都先將字符串轉換成int或者double類型,這樣做未必通用,因為可能含有字母,如8.5c這樣的版本號;

通用的方式依然是將分割后的字符串當做字符串來比較,不過,比較字符串之前,先比較位數(shù);

比較版本號的方法示例:

/** 
 * 比較版本號的大小,前者大則返回一個正數(shù),后者大返回一個負數(shù),相等則返回0 
 * @param version1 
 * @param version2 
 * @return 
 */ 
public static int compareVersion(String version1, String version2) throws Exception { 
  if (version1 == null || version2 == null) { 
    throw new Exception("compareVersion error:illegal params."); 
  } 
  String[] versionArray1 = version1.split("\\.");//注意此處為正則匹配,不能用"."; 
  String[] versionArray2 = version2.split("\\."); 
  int idx = 0; 
  int minLength = Math.min(versionArray1.length, versionArray2.length);//取最小長度值 
  int diff = 0; 
  while (idx < minLength 
      && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比較長度 
      && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比較字符 
    ++idx; 
  } 
  //如果已經分出大小,則直接返回,如果未分出大小,則再比較位數(shù),有子版本的為大; 
  diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length; 
  return diff; 
} 

注意:其中 split 方法入?yún)檎齽t匹配表達式,不能用"."("."在正則表達式里匹配任何值),需要用"\\.",才算是按點號分割;

這樣,先分割成子串數(shù)組,再挨個比較子版本號,比較子版本號時,先比較位數(shù),位數(shù)大的就大,位數(shù)一樣時再按字符串比較方式比較;

如果全部比較完(其中一個版本號比較完)之后,再看一下哪個版本號有更更多的子版本號,也就是分割后的數(shù)組長度,有子版本號的為大;

這樣就比較完善地考慮了各種情況,并比較出版本號大??;包括有字母后綴的也可以使用;

如 "9.9", "10.8.8.6" ,如果直接按字符串比較,則會前者大,后者小,而明顯是錯誤的;分割后比較第一個主版本9與10,從位數(shù)上,就已經得出結果后者大;

再如 "9.9b", "9.8a" 等也適用,如果用轉換成int或者double的方法就不適用.

相關文章

  • 解析Spring Boot 如何讓你的 bean 在其他 bean 之前完成加載

    解析Spring Boot 如何讓你的 bean 在其他 bean&n

    在 SpringBoot 中如何讓自己的某個指定的 Bean 在其他 Bean 前完成被 Spring 加載?我聽到這個問題的第一反應是,為什么會有這樣奇怪的需求?下面小編給大家分析下Spring Boot 如何讓你的 bean 在其他 bean 之前完成加載 ,感興趣的朋友一起看看吧
    2024-01-01
  • SpringBoot自動配置@EnableAutoConfiguration過程示例

    SpringBoot自動配置@EnableAutoConfiguration過程示例

    這篇文章主要為大家介紹了SpringBoot自動配置@EnableAutoConfiguration的過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • IDEA SSM框架整合配置及步驟詳解

    IDEA SSM框架整合配置及步驟詳解

    這篇文章主要介紹了IDEA SSM框架整合配置以及步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java實現(xiàn)文件編碼轉換的方法

    java實現(xiàn)文件編碼轉換的方法

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件編碼轉換的方法,分享一個文件編碼轉換的工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java稀疏數(shù)組的應用實踐

    Java稀疏數(shù)組的應用實踐

    本文主要介紹了Java稀疏數(shù)組的應用實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Maven排除依賴和可選依賴的使用方法

    Maven排除依賴和可選依賴的使用方法

    我們知道Maven依賴具有傳遞性,例如A依賴于B,B依賴于C,在不考慮依賴范圍等因素的情況下,Maven會根據(jù)依賴傳遞機制,將間接依賴C 引入到A中,但如果A出于某種原因,希望將間接依賴C排除,那該怎么辦呢,Maven為用戶提供了兩種解決方式排出和可選
    2023-06-06
  • Java垃圾回收器的方法和原理總結

    Java垃圾回收器的方法和原理總結

    本篇文章主要介紹了Java垃圾回收器的方法和原理總結,Java垃圾回收器是Java虛擬機的重要模塊,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Java之SpringCloud nocos注冊中心講解

    Java之SpringCloud nocos注冊中心講解

    這篇文章主要介紹了Java之SpringCloud nocos注冊中心講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Spring創(chuàng)建Bean的過程Debug的詳細流程

    Spring創(chuàng)建Bean的過程Debug的詳細流程

    這篇文章主要介紹了Spring創(chuàng)建Bean的過程Debug的流程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Spring Jpa多數(shù)據(jù)源工程配置過程解析

    Spring Jpa多數(shù)據(jù)源工程配置過程解析

    這篇文章主要介紹了Spring Jpa多數(shù)據(jù)源工程配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08

最新評論