比较两个哈希图(大小相同或不同)并存储奇数键

时间:2019-03-20 12:33:07

标签: java hashmap

我想比较两个哈希图可以相同或不同。 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);
}

}

1 个答案:

答案 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]