版本排序,(如果 版本 是 1,1a,1.1a, 2, 2c , 1c , 1.2a, 3 , 5b , 5)进行排序

如果 版本 是 1,1a,1.1a, 2, 2c , 1c , 1.2a, 3 , 5b , 5
对上面的进行排序
利用 VersionComparator

导入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

代码块

import cn.hutool.core.comparator.VersionComparator;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> originalList = new ArrayList<>();
        originalList.add("1");
        originalList.add("1a");
        originalList.add("1.1a");
        originalList.add("2");
        originalList.add("2c");
        originalList.add("1c");
        originalList.add("1.2a");
        originalList.add("3");
        originalList.add("5b");
        originalList.add("5");

        Map<String, String> versionMap = createVersionMap(originalList);
        List<String> transformedList = new ArrayList<>(versionMap.values());

        transformedList.sort(VersionComparator.INSTANCE);

        List<String> sortedOriginalList = applySortToOriginalList(originalList, transformedList, versionMap);

        System.out.println(sortedOriginalList);
    }

    private static Map<String, String> createVersionMap(List<String> originalList) {
        return originalList.stream()
                .collect(Collectors.toMap(
                        Function.identity(),
                        Main::transformToVersionString,
                        (v1, v2) -> v1, 
                        HashMap::new));
    }

    private static String transformToVersionString(String element) {
        return element;
    }

    private static List<String> applySortToOriginalList(List<String> originalList, List<String> sortedTransformedList, Map<String, String> versionMap) {
        return sortedTransformedList.stream()
                .map(versionMap::get)
                .collect(Collectors.toList());
    }
}

输出结果

[1, 1.1a, 1.2a, 1a, 1c, 2, 2c, 3, 5, 5b]

最近更新

  1. TCP协议是安全的吗?

    2024-04-03 07:00:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-03 07:00:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-03 07:00:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-03 07:00:06       20 阅读

热门阅读

  1. Shadow

    Shadow

    2024-04-03 07:00:06      9 阅读
  2. npm配置项管理

    2024-04-03 07:00:06       13 阅读
  3. matlab 轨迹生成函数

    2024-04-03 07:00:06       15 阅读
  4. 王道c语言-选择排序

    2024-04-03 07:00:06       13 阅读
  5. QT 支持window 和 mac下应用程序崩溃检测

    2024-04-03 07:00:06       17 阅读