/**
 * @author Shalf
 */
public class MapUtil {

/**
 * 仅适用ArrayList,由于java的泛型擦除机制,不能新建泛型类,这个方法写的通用性不好~
 * @param mergeMap 结果放到mergeMap的值的集合ArrayList中。
 * @param key 键
 * @param value 值
 */
public static <T, F> void merge2ResultMap(Map<T, List<F>> mergeMap, T key, F value) {
if (mergeMap.containsKey(key)) {
mergeMap.get(key).add(value);
} else {
List<F> rowsList = new ArrayList<F>();
rowsList.add(value);
mergeMap.put(key, rowsList);
}
}

/**
 * 把partMap数据合并放到mergeMap中。
 * @param mergeMap
 * @param partMap
 */
public static <T, F, K extends Collection<F>> void merge2ResultMap(Map<T, K> mergeMap, Map<T, K> partMap) {
for (Entry<T, K> entry : partMap.entrySet()) {
T key = entry.getKey();
if (mergeMap.containsKey(key)) {
mergeMap.get(key).addAll(entry.getValue());
} else {
mergeMap.putAll(partMap);
}
}
}
}