map集合取並集,差集,交集
前段時間需要用到取兩個集合的並集,差集,交集,在這貼下代碼記錄一下
1.獲取兩個map的並集
/**
* 取Map集合的並集
*
* @param map1 大集合
* @param map2 小集合
* @return 兩個集合的並集
*/
public static Map<String, Object> getUnionSetByGuava(Map<String, Object> map1, Map<String, Object> map2) {
Set<String> bigMapKey = map1.keySet();
Set<String> smallMapKey = map2.keySet();
Set<String> differenceSet = Sets.union(bigMapKey, smallMapKey);
Map<String, Object> result = Maps.newHashMap();
for (String key : differenceSet) {
if (map1.containsKey(key)) {
result.put(key, map1.get(key));
} else {
result.put(key, map2.get(key));
}
}
return result;
}
2.獲取兩個map差集
/**
* 取Map集合的差集
*
* @param bigMap 大集合
* @param smallMap 小集合
* @return 兩個集合的差集
*/
public static Map<String, Object> getDifferenceSetByGuava(Map<String, Object> bigMap, Map<String, Object> smallMap) {
Set<String> bigMapKey = bigMap.keySet();
Set<String> smallMapKey = smallMap.keySet();
Set<String> differenceSet = Sets.difference(bigMapKey, smallMapKey);
Map<String, Object> result = Maps.newHashMap();
for (String key : differenceSet) {
result.put(key, bigMap.get(key));
}
return result;
}
3.獲取連個map交集
/**
* 取Map集合的交集(String,String)
*
* @param map1 大集合
* @param map2 小集合
* @return 兩個集合的交集
*/
public static Map<String, Object> getIntersectionSetByGuava(Map<String, Object> map1, Map<String, Object> map2) {
Set<String> bigMapKey = map1.keySet();
Set<String> smallMapKey = map2.keySet();
Set<String> differenceSet = Sets.intersection(bigMapKey, smallMapKey);
Map<String, Object> result = Maps.newHashMap();
for (String key : differenceSet) {
result.put(key, map1.get(key));
}
return result;
}
