惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
爱范儿
爱范儿
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
博客园 - 聂微东
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
罗磊的独立博客
Jina AI
Jina AI

博客园 - GL_BKY

AI笔记 hippo4j线程池监控落地 Redisson实现分布式限流 Archery SQL 审核查询平台 mybatis-typeHandler解决表字段中json映射对象问题 WebLogAspect 面试常问题 自动代码质量分析示例搭建 Springboot监听多个端口 Git使用规范 一些问题 netty MQ Spring dubbo+zookeeper JVM 数据结构 redis JS前端加密JAVA后端解密详解
ConcurrentSkipListMap实现随机数命中权重占比
GL_BKY · 2023-02-13 · via 博客园 - GL_BKY
public String getCoverBottom(FlowAdditions additions) {
        if(null==additions){
            return "默认";
        }
        List<FlowCoverBottom> li = this.isMatchBottom(additions);
        if(null == li || li.isEmpty()){
            return "默认";
        }
        //根据权重输出兜底方。
        int sum = li.stream().mapToInt(FlowCoverBottom::getIntRatio).sum();
        int random = RandomUtils.nextInt(0, sum);
        ConcurrentSkipListMap<Integer,String> skipListMap = new ConcurrentSkipListMap<>();
        int ceiling = 0;
        for(int i=0;i<li.size();i++){
            FlowCoverBottom bottom = li.get(i);
            ceiling = ceiling+bottom.getIntRatio();
            skipListMap.put(ceiling,bottom.getCode());
        }
        return skipListMap.higherEntry(random).getValue();
    }

posted @ 2023-02-13 17:11  GL_BKY  阅读(49)  评论()    收藏  举报