取两个map交集、并集、差集
引入pom:
com.google.guava guava 31.1-android
话不多说,直接上代码:
import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.poi.ss.formula.functions.T;import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;public class MapUtils
{public static boolean hasDifference(ConcurrentMap leftMap, ConcurrentMap rightMap){MapDifference difference = Maps.difference(leftMap, rightMap);return difference.areEqual();}/*** 取Map集合的差集*/public static ConcurrentMap getDifferenceSetByGuava(ConcurrentMap leftMap, ConcurrentMap rightMap){if (null != leftMap && null != rightMap){Set leftMapKey = leftMap.keySet();Set rightMapKey = rightMap.keySet();Set differenceSet = Sets.difference(leftMapKey, rightMapKey);ConcurrentMap result = new ConcurrentHashMap<>();for (S key : differenceSet){result.put(key, leftMap.get(key));}return result;}else{return null;}}/*** 取Map集合的交集(String,String)*/public static ConcurrentMap getIntersectionSetByGuava(ConcurrentMap leftMap, ConcurrentMap rightMap){if (null != leftMap && null != rightMap){Set leftMapKey = leftMap.keySet();Set rightMapKey = rightMap.keySet();Set differenceSet = Sets.intersection(leftMapKey, rightMapKey);ConcurrentMap result = new ConcurrentHashMap<>();for (S key : differenceSet) {result.put(key, leftMap.get(key));}return result;}else{return null;}}/*** 取Map集合的并集*/public static ConcurrentMap getUnionSetByGuava(ConcurrentMap leftMap, ConcurrentMap rightMap){if (null != leftMap && null != rightMap){Set leftMapKey = leftMap.keySet();Set rightMapKey = rightMap.keySet();Set differenceSet = Sets.union(leftMapKey, rightMapKey);ConcurrentMap result = new ConcurrentHashMap<>();for (S key : differenceSet){if (leftMap.containsKey(key)){result.put(key, leftMap.get(key));}else{result.put(key, rightMap.get(key));}}return result;}else{return null;}}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
