/*

* 随机分配

*/

public Map allotOfRandom(List users,List tasks){

Map allot=new ConcurrentHashMap(); //保存分配的信息

if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){

for(int i=0;i

int r_user=new Random().nextInt(users.size());

if(allot.containsKey(users.get(r_user))){

List list=allot.get(users.get(r_user));

list.add(tasks.get(i));

allot.put(users.get(r_user), list);

}else{

List list=new ArrayList();

list.add(tasks.get(i));

allot.put(users.get(r_user), list);

}

}

}

return allot;

}

/*

* 平均分配

*/

public Map allotOfAverage(List users,List tasks){

Map allot=new ConcurrentHashMap(); //保存分配的信息

if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){

for(int i=0;i

int j=i%users.size();

if(allot.containsKey(users.get(j))){

List list=allot.get(users.get(j));

list.add(tasks.get(i));

allot.put(users.get(j), list);

}else{

List list=new ArrayList();

list.add(tasks.get(i));

allot.put(users.get(j), list);

}

}

}

return allot;

}

/*

* 权重分配

*/

public Map allotOfProportion(Map users,List tasks){

Map allot=new ConcurrentHashMap(); //保存分配的信息

if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){

int a=0;//总权重

for(Entry entry:users.entrySet()){

a+=Integer.parseInt(entry.getValue());

}

int start=0,end=0;//起始下标 ,结束下标

if(a>0){

for(Entry entry:users.entrySet()){

List allotTask=new ArrayList();

end+=Integer.parseInt(entry.getValue());//权重累计

for(;start < tasks.size()*end/a;start++){

allotTask.add(tasks.get(start));

}

allot.put(entry.getKey(),allotTask);

}

}

}

return allot;

}

喜欢 (3)or分享 (0)

java 平均分配算法_java 分配算法相关推荐

  1. java g1 详解_JAVA垃圾收集算法总结以及CMS、G1算法详解

    前段时间由于工作原因一直很忙,上周项目验收后时间终于空闲下来,博客也有好几个月没有更新了,趁着还有几天放假,借这个机会写点东西:网上也有很多人写过Java垃圾收集器,特别现在主流比较火的CMS和G1算 ...

  2. java 数据合并算法_Java与算法之(11) - 合并排序

    天下事,合久必分,分久必合.合并排序的基本思想正是先分再合. 例如对3, 1这个数列排序,首先是分,分为3和1两个数列,然后再合并并排序.合并需要额外的辅助空间,即建立一个两个数列长度之和的空数组用于 ...

  3. java 比较算法_JAVA排序算法实现和比较:冒泡,桶,选择,快排,归并

    一.冒泡排序: 实现思想: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也 ...

  4. Java排序算快速排序_Java排序算法 [快速排序]

    package cn.com.dom4j.sort; public class QuickSort { /** 快速排序 在 Java中, 快速排序被用作基本数据类型的排序 (当然, 不只快速排序一种 ...

  5. java求公式例题_JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

  6. java经典50题_JAVA经典算法50题(3)【面试+工作】

    原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...

  7. java常见的算法_Java常用算法总结(转)

    交换排序 冒泡排序 将最后一个元素与倒数第二个元素对比,如果最后一个元素比倒数第二个小,则交换两个元素的位置,再用倒数第二个元素与倒数第三个元数对比,直到比到第一个元素,这样经过第一趟排序后得到第一个 ...

  8. java选择排序代码_Java排序算法总结之选择排序

    本文实例讲述了Java排序算法总结之选择排序.分享给大家供大家参考.具体分析如下: 选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部 ...

  9. java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...

    展开全部 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节e68a8462616964757a686964616f31333361316131点的最短路径.主要 ...

最新文章

  1. Hadoop集群的基本操作(五:Sqoop的基本操作)
  2. win11 WSL centos7安装docker命令整理
  3. 演练 多班分数录入统计优秀人数
  4. 如何使用LVM逻辑卷
  5. 十进制四则运算计算器代码,输入为字符串
  6. 010.第一个回声服务器可能遇到的问题——connect函数
  7. vue 判断两对象是否一致_vue - 比较两个Json对象是否相等
  8. html 【一个简单的用户登录页面代码】
  9. 互联网日报 | 蚂蚁集团成立整改工作组;万达完成开业45座万达广场年度目标;T3出行日订单突破100万...
  10. 女性黑客的崛起将造福世界
  11. 【我的OpenGL学习进阶之旅】如何抽取着色器代码到assets目录下的GLSL文件,以及如何通过Java或者C++代码来加载着GLSL文件?
  12. 【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
  13. opencv光线补偿_教你了解摄像机的背光补偿
  14. python3 zlib 实现压缩与解压字符串与文件数据流
  15. 网页脚本输入这么简单
  16. 100多年前人们心中的2018年:部分预测已成现实
  17. SSM+社区线上超市购物系统 毕业设计-附源码211704
  18. 问答推广技巧和注意事项问答平台推广的执行方案
  19. 设置tabBarItem图片渲染
  20. 百度商业系统大规模微服务分布式监控实践

热门文章

  1. java中什么是数组_JAVA中关于数组的定义
  2. java中session源码_Spring Session原理及源码分析
  3. android实现欢迎启动界面
  4. c语言sleep函数上限多久解除,关于sleep函数的问题,
  5. vs移植的.exe再编译无法更新_CODE|编译带PDAL的cloudcompare(补充)
  6. java 线程同步的list_java线程生产者与消费者实例(使用List实现同步)
  7. 在spark应用程序中设置输出日志的级别
  8. Spring AOP功能的实现
  9. 汇编:分段函数的值的计算
  10. 漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)