java 버전 번호 비교 기능 구현
따라서 버전 번호의 공통 규칙을 정리하고 비교 알고리즘을 설계하여 공통 방법으로 봉인해야 합니다.
일반적인 버전 번호는 1.3.20.8, 6.82.20160101, 8.5a/8.5c 등이다.
일반적인 규칙은 먼저 버전 문자열을 점호에 따라 분할한 다음에 메인 버전과 메인 버전을 비교하고 이 버전과 이 버전을 비교하는 것이다. 이렇게 순서에 따라 한 단계씩 뒤로 비교하고 크기가 나눌 때까지 비교한다.
주의해야 할 것은 버전 번호를 비교하는 많은 방법들이 먼저 문자열을 int나 double 형식으로 바꾸는 것이다. 이렇게 하면 반드시 통용되는 것은 아니다. 왜냐하면 자모, 예를 들어 8.5c와 같은 버전 번호를 포함할 수 있기 때문이다.
통용되는 방식은 여전히 분할된 문자열을 문자열로 비교하지만, 문자열을 비교하기 전에 먼저 비트를 비교한다.
버전 번호를 비교하는 방법의 예:
/**
* , , , 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;
}
// , , , , ;
diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
return diff;
}
주의: 이 중 split 방법은 정규 일치 표현식으로 들어가서'.'을 사용할 수 없습니다.("."정규 표현식에 일치하는 값) 을 사용하려면\\.점호에 따라 분할하는 셈이다.이렇게 하면 먼저 하위 직렬수 그룹으로 나누어 하위 버전 번호를 하나씩 비교하고 하위 버전 번호를 비교할 때 먼저 비트를 비교하고 비트가 큰 것은 크며 비트가 같을 때 문자열 비교 방식으로 비교한다.
만약 모두 비교가 끝난 후에 어느 버전 번호가 더 많은 하위 버전 번호, 즉 분할된 수조의 길이, 하위 버전 번호가 있는 것이 큰지 다시 한 번 봅시다.
이렇게 하면 여러 가지 상황을 비교적 완벽하게 고려하고 출판 본호의 크기를 비교한다.알파벳 접미사가 있는 것도 사용할 수 있다.
예를 들어'9.9','10.8.8.6'을 문자열로 비교하면 전자가 크고 후자가 작으며 분명히 잘못된 것이다.분할 후 첫 번째 메인 버전 9와 10을 비교한 결과 비트에서 후자가 크다는 것을 알 수 있다.
또한,'9.9b','9.8a'등도 적용되며, int나double로 전환하는 방법으로는 적용되지 않는다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel 네트워크에서 느린 작업 속도 해결 방법 열기이 일괄 처리는 고객의 도메인 플러스 터미널 서버 환경에서 WSUS 서버에서 Office 패치를 보낸 후 매크로가 포함된 모든 Excel 파일의 열기 속도가 매우 느리고 가볍게는 2-3분, 무겁게는 10여 분에 달하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.