Javaでのバージョン比較ライブラリ一覧
Claude 3.7 Sonnet(消費:1)
Claude 3.7 Sonnet(消費:1)
Javaでバージョンを比較する何か良いライブラリ・APIはありますか?
Javaでバージョン比較を行うライブラリ/API
Javaでバージョン文字列を比較するには、以下のライブラリやAPIが便利です:
1. Apache Maven Artifact
Maven自体のバージョン比較ロジックは堅牢で広く使われています。
Java1import org.apache.maven.artifact.versioning.ComparableVersion; 2 3ComparableVersion v1 = new ComparableVersion("1.2.3"); 4ComparableVersion v2 = new ComparableVersion("1.2.10"); 5 6int result = v1.compareTo(v2); // 負の値が返る(v1 < v2)
依存関係:
xml1<dependency> 2 <groupId>org.apache.maven</groupId> 3 <artifactId>maven-artifact</artifactId> 4 <version>3.8.6</version> 5</dependency>
2. Semantic Versioning (semver4j)
セマンティックバージョニング(SemVer)規格に準拠したバージョン比較:
Java1import com.vdurmont.semver4j.Semver; 2 3Semver sem1 = new Semver("1.2.3"); 4Semver sem2 = new Semver("1.3.0"); 5 6boolean result = sem1.isLowerThan(sem2); // true
依存関係:
xml1<dependency> 2 <groupId>com.vdurmont</groupId> 3 <artifactId>semver4j</artifactId> 4 <version>3.1.0</version> 5</dependency>
3. Java標準APIで自前実装
標準APIを使った単純な実装:
Java1public int compareVersions(String version1, String version2) { 2 String[] v1Parts = version1.split("\\."); 3 String[] v2Parts = version2.split("\\."); 4 5 int length = Math.max(v1Parts.length, v2Parts.length); 6 7 for (int i = 0; i < length; i++) { 8 int v1 = i < v1Parts.length ? Integer.parseInt(v1Parts[i]) : 0; 9 int v2 = i < v2Parts.length ? Integer.parseInt(v2Parts[i]) : 0; 10 11 if (v1 < v2) return -1; 12 if (v1 > v2) return 1; 13 } 14 15 return 0; 16}
ユースケースに合わせて、最適な選択肢を検討してください。複雑なバージョン形式(プレリリースタグ付きなど)を扱う場合は、既存のライブラリを利用するのが確実です。