сравнение двух хеш-карт (одинакового или разного размера) и сохранение нечетных ключей - PullRequest
0 голосов
/ 20 марта 2019

Я хочу сравнить два 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 208 203 206 205 206 204} store = 204 205 206, так как частота не соответствует

мой код as-

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 голосов
/ 20 марта 2019

Если вы можете использовать Гуава , то есть 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...