栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现版本号排序算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现版本号排序算法

源数据如下,要求对该list针对osVersion字段进行排序

[
    {
        "osVersion": "11.3.1",
        "num": 100
    },
    {
        "osVersion": "5.1.2",
        "num": 43
    },
    {
        "osVersion": "10.3",
        "num": 23
    },
    {
        "osVersion": "7.0.3",
        "num": 55
    },
    {
        "osVersion": "15.1.1",
        "num": 47
    }
]

下面贴可执行代码

package xxx.xxx.xxx.test;

import com.alibaba.fastjson.JSON;
import org.springframework.util.ObjectUtils;

import java.util.Comparator;
import java.util.List;


public class VersionSort {

    public static class VersionData {

        private String osVersion;

        private Long num;

        public String getOsVersion() {
            return osVersion;
        }

        public void setOsVersion(String osVersion) {
            this.osVersion = osVersion;
        }

        public Long getNum() {
            return num;
        }

        public void setNum(Long num) {
            this.num = num;
        }
    }

    public static void main(String[] args) {
        // 这里jsonStr放上面贴出来的源数据
        String jsonStr = "";
        List versionDataList = JSON.parseArray(jsonStr, VersionData.class);
        versionDataList.sort(Comparator.comparing(item -> getOsVersionValue(item.osVersion)));
        System.out.println(JSON.toJSonString(versionDataList));
    }

    
    private static Integer getOsVersionValue(String osVersion) {
        if (ObjectUtils.isEmpty(osVersion)) {
            return 0;
        }
        String[] arr = osVersion.split("\.");
        Integer value = 0;
        for (int i = 0, j = 2; i < arr.length; i++, j--) {
            Double val = Math.pow(10, j);
            value += Integer.parseInt(arr[i]) * val.intValue();
        }
        return value;
    }
}

执行main方法,成功得到排序结果,如果需要逆序,则对结果集进行一次reverse即可

[{
	"num": 43,
	"osVersion": "5.1.2"
}, {
	"num": 55,
	"osVersion": "7.0.3"
}, {
	"num": 23,
	"osVersion": "10.3"
}, {
	"num": 100,
	"osVersion": "11.3.1"
}, {
	"num": 47,
	"osVersion": "15.1.1"
}]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号