前段时间需要用到取两个集合的并集,差集,交集,在这贴下代码记录一下
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; }