java 分配算法

/*
     * 随机分配
     */
	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 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 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

你可能感兴趣的:(java)