use*_*058 -3 java versioning sorting
我有一个包含版本字符串的列表,例如:
List<String> versions_list = Arrays.asList("1.1.2", "1.0.0", "1.3.3", "1.0.12", "1.0.2");
Run Code Online (Sandbox Code Playgroud)
我想对它进行排序,所以结果会是这样的:
["1.0.0", "1.0.2", "1.0.12", "1.1.2", "1.3.3"]
Run Code Online (Sandbox Code Playgroud)
如何在 Java 中执行此操作。
这是一个现代解决方案,用于Comparator.comparing基于预先存在的标准库Arrays.compare(int[])方法构建版本字符串比较器。
List<String> versionList = Arrays.asList("1.1.2", "1.0.0", "1.3.3", "1.0.12", "1.0.2");
Pattern pattern = Pattern.compile("\\.");
Comparator<String> versionComparator = Comparator.comparing(
str -> pattern.splitAsStream(str)
.mapToInt(Integer::parseInt)
.toArray(),
Arrays::compare);
versionList.sort(versionComparator);
System.out.println(versionList);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |