/**
* @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);
}
}
}
}
* @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);
}
}
}
}
Spring中的MultiValueMap;
Guava中的MultiMap;
等第二个方法:jdk8中Map接口已经提供了merge方法