content: package com.alipay.bluewhale.core.stats.keyAvg;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import java.util.Map.Entry;
  
  import com.alipay.bluewhale.core.callback.RunnableCallback;
  import com.alipay.bluewhale.core.stats.method.Pair;
  import com.alipay.bluewhale.core.stats.method.StatFunction;
  
  public class KeyAvgMerge extends RunnableCallback {
  
  	@SuppressWarnings("unchecked")
  	@Override
  	public <T> Object execute(T... args) {
  		List<Map<Object, Pair>> list = (List<Map<Object, Pair>>) args[0];
  		Map<Object, Pair> result = new HashMap<Object, Pair>();
  		Map<Object, List<Pair>> trans = new HashMap<Object, List<Pair>>();
  		for (Map<Object, Pair> each : list) {
  			for (Entry<Object, Pair> e : each.entrySet()) {
  				Object key = e.getKey();
  				List<Pair> val = new ArrayList<Pair>();
  				if (trans.containsKey(key)) {
  					val = trans.get(key);
  				}
  				val.add(e.getValue());
  				trans.put(key, val);
  			}
  		}
  
  		for (Entry<Object, List<Pair>> e : trans.entrySet()) {
  			result.put(e.getKey(), StatFunction.merge_keyed_avg(e.getValue()));
  		}
  		return result;
  	}
  }
  