版本比较工具类VersionUtil

        无论在app开发或Java后端开发,版本比较的场景都比较多,封装一个工具类,方便后面使用。

public class VersionUtil {

    public static int compareVersionNo(String version1, String version2) {
        String versionNum1 = getNonStringVersionNum(version1);
        String versionNum2 = getNonStringVersionNum(version2);
        String[] nums1 = versionNum1.split("\\.");
        String[] nums2 = versionNum2.split("\\.");
        int minLen = Math.min(nums1.length, nums2.length);
        for (int i = 0; i < minLen; i++) {
            if (!nums1[i].equals(nums2[i])) {
                if (StringUtils.isNumeric(nums1[i]) && StringUtils.isNumeric(nums2[i])) {
                    if (i <= 1) {
                        return (Integer.parseInt(nums1[i]) % 100) - (Integer.parseInt(nums2[i]) % 100);
                    } else {
                        return Integer.parseInt(nums1[i]) - Integer.parseInt(nums2[i]);
                    }
                } else {
                    return nums1[i].compareTo(nums2[i]);
                }
            }
        }
        return 0;
    }

    public static String getNonStringVersionNum(String versionNum) {
        StringBuilder result = new StringBuilder();
        if (versionNum != null && !versionNum.isEmpty()) {
            for (int i = 1; i < versionNum.length(); i++) {
                result.append(versionNum.charAt(i));
            }
        }
        return result.toString();
    }

    /**
     * 版本倒序
     *
     * @param versionList
     * @return
     */
    public static List<String> sortDesc(Collection<String> versionList) {
        List<String> sortedVersionList = versionList == null ? new ArrayList<String>() : new ArrayList<>(versionList);
        sortedVersionList.sort((v1, v2) -> compareVersionNo(v2, v1));
        return sortedVersionList;
    }

    /**
     * 版本升序
     *
     * @param versionList
     * @return
     */
    public static List<String> sortAsc(Collection<String> versionList) {
        List<String> sortedVersionList = versionList == null ? new ArrayList<String>() : new ArrayList<>(versionList);
        sortedVersionList.sort((v1, v2) -> compareVersionNo(v1, v2));
        return sortedVersionList;
    }
}

  对版本排序:

List<CompatibleProductVo> compatibleProductVoList = productCompatibilityDao.getConfiguredProduct();
for (CompatibleProductVo compatibleProductVo : compatibleProductVoList) {
    List<VersionVo> versionList = compatibleProductVo.getVersionList();
    versionList.sort((o1, o2) -> VersionUtil.compareVersionNo(o2.getVersionNumber(), o1.getVersionNumber()));
    compatibleProductVo.setVersionList(versionList);
}

相关推荐

  1. 版本比较工具VersionUtil

    2024-02-21 12:32:05       48 阅读
  2. 工具】对象比较工具实现

    2024-02-21 12:32:05       22 阅读
  3. Linux 文件比较工具

    2024-02-21 12:32:05       37 阅读
  4. Leetcode 165. 比较版本

    2024-02-21 12:32:05       38 阅读
  5. 力扣-比较版本

    2024-02-21 12:32:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 12:32:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 12:32:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 12:32:05       87 阅读
  4. Python语言-面向对象

    2024-02-21 12:32:05       96 阅读

热门阅读

  1. SVN服务备份

    2024-02-21 12:32:05       44 阅读
  2. python之ftp小工具

    2024-02-21 12:32:05       42 阅读
  3. kotlin协程学习总结

    2024-02-21 12:32:05       59 阅读
  4. 3DTile是不是没有坐标的选择?

    2024-02-21 12:32:05       51 阅读
  5. flask get请求

    2024-02-21 12:32:05       52 阅读
  6. 511. 游戏玩法分析 I

    2024-02-21 12:32:05       55 阅读
  7. 实现一个Windows环境一键启停Oracle的bat脚本

    2024-02-21 12:32:05       48 阅读
  8. WPS AI功能测试

    2024-02-21 12:32:05       58 阅读
  9. git 创建远程分支和本地分支,并将分支关联

    2024-02-21 12:32:05       46 阅读