引入pom:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-android</version>
</dependency>
话不多说,直接上代码:
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<T, T> leftMap, ConcurrentMap<T, T> rightMap)
{
MapDifference<T, T> difference = Maps.difference(leftMap, rightMap);
return difference.areEqual();
}
/**
* 取Map集合的差集
*/
public static <S,T> ConcurrentMap<S, T> getDifferenceSetByGuava(ConcurrentMap<S, T> leftMap, ConcurrentMap<S, T> rightMap)
{
if (null != leftMap && null != rightMap)
{
Set<S> leftMapKey = leftMap.keySet();
Set<S> rightMapKey = rightMap.keySet();
Set<S> differenceSet = Sets.difference(leftMapKey, rightMapKey);
ConcurrentMap<S, T> result = new ConcurrentHashMap<>();
for (S key : differenceSet)
{
result.put(key, leftMap.get(key));
}
return result;
}
else
{
return null;
}
}
/**
* 取Map集合的交集(String,String)
*/
public static <S,T> ConcurrentMap<S, T> getIntersectionSetByGuava(ConcurrentMap<S, T> leftMap, ConcurrentMap<S, T> rightMap)
{
if (null != leftMap && null != rightMap)
{
Set<S> leftMapKey = leftMap.keySet();
Set<S> rightMapKey = rightMap.keySet();
Set<S> differenceSet = Sets.intersection(leftMapKey, rightMapKey);
ConcurrentMap<S, T> result = new ConcurrentHashMap<>();
for (S key : differenceSet) {
result.put(key, leftMap.get(key));
}
return result;
}
else
{
return null;
}
}
/**
* 取Map集合的并集
*/
public static <S,T> ConcurrentMap<S, T> getUnionSetByGuava(ConcurrentMap<S, T> leftMap, ConcurrentMap<S, T> rightMap)
{
if (null != leftMap && null != rightMap)
{
Set<S> leftMapKey = leftMap.keySet();
Set<S> rightMapKey = rightMap.keySet();
Set<S> differenceSet = Sets.union(leftMapKey, rightMapKey);
ConcurrentMap<S, T> 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;
}
}
}