我想比较两个哈希图可以相同或不同。 1存储两个哈希图中都不存在的密钥。 2存储两个哈希图中都存在但具有不同值的密钥。
我创建了一个程序,该程序将整数作为输入,并创建了一个哈希表,其中包含与整数频率相关的整数(无出现次数)
如何存储满足上述条件的哈希映射键
ex- arr = {7 2 5 3 5 3},brr = {7 2 5 4 6 3 5 3} store = 4,6
ex2- arr = {203 204 205 206 207 208 203 204 205 206},brr = {203 204 204 205 206 207 205 205 203 206 205 206 204} store = 204,205,206,因为频率不匹配
我的代码为-
import java.util.*;
公共类解决方案{
public static void main(String args[])
{
Scanner s = new Scanner(System.in);
int x=s.nextInt();
int[] arr=new int[x];
int i,j,count=0;
for(i=0;i<x;i++)
{
arr[i]=s.nextInt();
}
Map<Integer, Integer> check=new HashMap<Integer, Integer>();
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
if(arr[i]==arr[j])
{
count++;
}
}
check.put(arr[i], count);
count=0;
}
int y=s.nextInt();
int[] brr=new int[y];
for(i=0;i<y;i++)
{
brr[i]=s.nextInt();
}
Map<Integer, Integer> check1=new HashMap<Integer, Integer>();
int count1=0;
for(i=0;i<y;i++)
{
for(j=0;j<y;j++)
{
if(brr[i]==brr[j])
{
count1++;
}
}
check1.put(brr[i], count1);
count1=0;
}
System.out.println(check);
System.out.println(check1);
}
}
答案 0 :(得分:0)
如果可以使用Guava,则有Sets.symmetricDifference()
和Sets.intersection()
。
Map<Integer, Integer> a = Map.of(0, 0, 1, 1, 2, 2); // {2=2, 1=1, 0=0}
Map<Integer, Integer> b = Map.of(0, 0, 2, 4, 4, 8); // {4=8, 2=4, 0=0}
Set<Integer> differentKeys = Sets.symmetricDifference(a.keySet(), b.keySet());
System.out.println(differentKeys); // [1, 4]
Set<Integer> sameKeyDifferentValues = Sets.intersection(a.keySet(), b.keySet())
.stream()
.filter(c -> !a.get(c).equals(b.get(c)))
.collect(Collectors.toSet());
System.out.println(sameKeyDifferentValues); // [2]