版本排序,(如果 版本 是 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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值