进步,意味着目标不断前移,阶段不断更新,它的视野不断变化。

java 分配算法

工作 茳先生 292℃ 0评论
/* 
     * 随机分配 
     */  
    public Map<String,List> allotOfRandom(List users,List tasks){  
        Map<String,List> allot=new ConcurrentHashMap<String,List>(); //保存分配的信息  
        if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
            for(int i=0;i<tasks.size();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<String,List> allotOfAverage(List users,List tasks){  
        Map<String,List> allot=new ConcurrentHashMap<String,List>(); //保存分配的信息  
        if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
            for(int i=0;i<tasks.size();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<String,List> allotOfProportion(Map<String,String> users,List tasks){  
            Map<String,List> allot=new ConcurrentHashMap<String,List>(); //保存分配的信息  
            if(users!=null&&users.size()>0&&tasks!=null&&tasks.size()>0){  
                int a=0;//总权重   
                for(Entry<String, String> entry:users.entrySet()){    
                   a+=Integer.parseInt(entry.getValue());    
                }  
                int start=0,end=0;//起始下标 ,结束下标   
                if(a>0){  
                    for(Entry<String, String> 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;  
    }  

转载请注明:努力奋斗 » java 分配算法

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址