java 分配算法

2023-10-27

原文地址:http://blog.csdn.net/qq_30085577/article/details/52756715

版权声明:本文为博主原创文章,未经博主允许不得转载。

  1. /* 
  2.      * 随机分配 
  3.      */  
  4.     public Map<String,List<String>> allotOfRandom(List<String> users,List<String> tasks){  
  5.         Map<String,List<String>> allot=new ConcurrentHashMap<String,List<String>>(); //保存分配的信息  
  6.         if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
  7.             for(int i=0;i<tasks.size();i++){  
  8.                     int r_user=new Random().nextInt(users.size());  
  9.                     if(allot.containsKey(users.get(r_user))){  
  10.                         List<String> list=allot.get(users.get(r_user));  
  11.                         list.add(tasks.get(i));  
  12.                         allot.put(users.get(r_user), list);  
  13.                     }else{  
  14.                         List<String> list=new ArrayList<String>();  
  15.                         list.add(tasks.get(i));  
  16.                         allot.put(users.get(r_user), list);  
  17.                     }  
  18.             }  
  19.         }  
  20.         return allot;  
  21.     }  
  22.     /* 
  23.      * 平均分配 
  24.      */  
  25.     public Map<String,List<String>> allotOfAverage(List<String> users,List<String> tasks){  
  26.         Map<String,List<String>> allot=new ConcurrentHashMap<String,List<String>>(); //保存分配的信息  
  27.         if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
  28.             for(int i=0;i<tasks.size();i++){  
  29.                 int j=i%users.size();  
  30.                 if(allot.containsKey(users.get(j))){  
  31.                     List<String> list=allot.get(users.get(j));  
  32.                     list.add(tasks.get(i));  
  33.                     allot.put(users.get(j), list);  
  34.                 }else{  
  35.                     List<String> list=new ArrayList<String>();  
  36.                     list.add(tasks.get(i));  
  37.                     allot.put(users.get(j), list);  
  38.                 }  
  39.             }  
  40.         }  
  41.         return allot;  
  42.     }  
  43.     /* 
  44.      * 权重分配 
  45.      */  
  46.     public Map<String,List<String>> allotOfProportion(Map<String,String> users,List<String> tasks){  
  47.             Map<String,List<String>> allot=new ConcurrentHashMap<String,List<String>>(); //保存分配的信息  
  48.             if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
  49.                 int a=0;//总权重   
  50.                 for(Entry<String, String> entry:users.entrySet()){    
  51.                    a+=Integer.parseInt(entry.getValue());    
  52.                 }  
  53.                 int start=0,end=0;//起始下标 ,结束下标   
  54.                 if(a>0){  
  55.                     for(Entry<String, String> entry:users.entrySet()){    
  56.                         List<String> allotTask=new ArrayList<String>();    
  57.                         end+=Integer.parseInt(entry.getValue());//权重累计    
  58.                         for(;start<tasks.size()*end/a;start++){    
  59.                             allotTask.add(tasks.get(start));    
  60.                         }    
  61.                         allot.put(entry.getKey(),allotTask);    
  62.                     }   
  63.                 }  
  64.             }  
  65.         return allot;  
  66.     } 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 分配算法 的相关文章

随机推荐

  • 如何将子窗口的值传到父窗口去调用

    这是我当初的问题 现在我想实现这样一个功能 现在父窗口有一个select控件 同时有一个 增加 按钮 点击按钮 弹出一个窗口 这时弹出窗口也有一个table 同时有一个 确认 按钮 table中有若干项 每一行对应一条记录 并有一个chec
  • 前端VUE项目部署到远程服务器

    文章目录 1 基础介绍 2 准备VUE项目 3 服务器安装 nginx服务器 4 启动nginx 5 修改nginx 配置 6 打包部署VUE项目 1 基础介绍 VUE项目 前后端分离 前后端部署到同一个服务器上 服务器 腾讯云轻量应用服务
  • 关于order by后面接条件查询

    适用场景 如表tab a 有三个字段 如果field1非空则按升序排列 如果field1是空再排field2 如果 field2非空升序排列 如果field2是空再排field3 如果field3非空则升序排列 如果field3是空 例子1
  • linux+应用程序运行日志,Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时...

    概述 在本教程中 您将学习以下内容 配置 syslog 守护程序 了解标准设施 优先级和操作 配置日志轮换 了解 rsyslog 和 syslog ng 系统内部发生了什么 Linux 系统运行着许多子系统和应用程序 您可以使用系统日志记录
  • c++ 双端队列 deque用法解析

    1 deque的作用 deque即双端队列 它的用法非常强大 可以代替栈stack 队列queue 向量容器vector等等 因为它能像栈一样后进先出 也能像queue一样先进先出 还能像vector一样随机访问 同时支持sort lowe
  • java模糊查询代码_Java模糊查询方法详解

    这篇文章主要为大家详细介绍了Java模糊查询方法的实现 实例教你如何用Java做模糊查询结果 感兴趣的小伙伴们可以参考一下 当我们需要开发一个方法用来查询数据库的时候 往往会遇到这样一个问题 就是不知道用户到底会输入什么条件 那么怎么样处理
  • 【机器学习】太香啦!只需一行Python代码就可以自动完成模型训练!

    自动化机器学习 Auto ML 是指数据科学模型开发的管道组件自动化 AutoML 减少了数据科学家的工作量并加快了工作流程 AutoML 可用于自动化各种管道组件 包括数据理解 EDA 数据处理 模型训练 超参数调整等 对于端到端机器学习
  • 小米 adb 驱动_ADB禁用系统应用

    第一步 下载ADB压缩包 并解压到根目录下 自己百度找ADB包 第二步 在ADB目录下 shift 鼠标右键 打开powershell 并输入cmd 第三步 手机进入开发者模式 百度 并打开USB调试 数据线连接电脑和手机 要安装好驱动 在
  • 解决idea项目没有蓝色小方块

    导入项目后 把项目中的几个子moudle复制了一份 作为一个新模块 结果发现 项目右下角没有 蓝色小方块 因此造成maven不能识别 如下图 解决方式 在右边侧栏 maven 面板 点击 选择该项目中的pom xml文件即可
  • linux安装时 dev sda4,VMvare在CentOS7.4安装iscsi共享盘

    VMvare 在 CentOS7 4 安装 iscsi 共享盘 1 在节点 1 上添加一个 20g 的存储并 reboot 1 1 查看新添加的磁盘 root xmc1 fdisk l Disk dev sda 32 2 GB 322122
  • python多进程和多线程看这一篇就够了

    脑海中关于进程和线程的概念一直很模糊 什么时候该用多进程 什么时候该用多线程总是搞不清楚 同时python因为历史遗留问题存在GIL全局锁 就让人更加困惑 这一篇就完整整理一下python中进程和线程的概念和实现 文章目录 进程和线程 GI
  • 逻辑Flask——Flask模板

    文章目录 一 简单模板 二 模板传参 三 jinja2内置过滤器 四 Jinja2自定义过滤器 通用过滤器 自定义时间过滤器 五 控制语句 1 if 语句 2 for in语句 列表 遍历字典 获取当前遍历状态 六 宏 6 0 宏的基本模板
  • Python 基础知识7 集合

    python 集合 创建集合 重复的自动被过滤 parame apple orrange banana pear pear print parame parame1 set bird dog pig print parame1 parame
  • 各平台电脑开启虚拟化的方法

    1 Intel平台笔记本 进入BIOS 选择 Configuration 选项 找到 Intel Virtual Technology 改成Enable 2 AMD平台笔记本 进入BIOS 选择 Configuration 的选项 找到 S
  • 使用非负最小二乘回(NNLS)归进行细胞类型转移

    2019年发表在Nature上的文章 The single cell transcriptional landscape of mammalian organogenesis 在方法部分提到 使用NNLS non negative line
  • 西门子传动系统出现这些故障提示原因分析

    1 F002 Pre charging 预充电故障 对整流单元来说 其可能原因为 主进线开关断开或没有闭合 整流单元 例 复卷机整流单元四个熔断器断路 导致传动点出现F008 直流母线电压过低 在更换熔断器后 启动整流器时出现F002 原因
  • bios sgx需要开启吗_华硕主板BIOS解读:新手装机必备篇(必须收藏)

    史上最全BIOS解读 中英文对译 一字一句解析 让你从此不在BIOS中迷路 本期讲解模板BIOS来自华硕TUF X570 GAMING WIFI 今天讲解的内容为新手装机必须经历的内容 新手装机常用到的BIOS选项 并且附上中英文翻译对照
  • 快速排序算法的三种实现

    1 普通快速排序 快速排序思路 随机取一个标定点 v 将 v 放置到合适的位置 保证 v 左边的元素都小于等于 v v 右边的元素都大于 v 然后再继续分别对左边元素和右边的元素做同样的排序动作 直到整个数组有序 那么怎么实现这个快速排序呢
  • Vue-Loader 打包单文件组件实战

    本文是我在学习过程中记录学习的点点滴滴 目的是为了学完之后巩固一下顺便也和大家分享一下 日后忘记了也可以方便快速的复习 Vue Loader 打包单文件组件 前言 一 webpack 结合 Vue Loader 打包单文件组件基本认识 1
  • java 分配算法

    原文地址 http blog csdn net qq 30085577 article details 52756715 版权声明 本文为博主原创文章 未经博主允许不得转载 java view plain copy 随机分配 public