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

发布于:2024-04-06 ⋅ 阅读:(128) ⋅ 点赞:(0)

如果 版本 是 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]

网站公告

今日签到

点亮在社区的每一天
去签到