Как я могу объединить два объекта HashMap, содержащих одинаковые типы? - PullRequest
216 голосов
/ 29 ноября 2010

У меня есть два HashMap объекта, определенных следующим образом:

HashMap<String, Integer> map1 = new HashMap<String, Integer>();
HashMap<String, Integer> map2 = new HashMap<String, Integer>();

У меня также есть третий HashMap объект:

HashMap<String, Integer> map3;

Как объединить map1 иmap2 вместе в map3?

Ответы [ 12 ]

0 голосов
/ 27 мая 2019
    HashMap<Integer,String> hs1 = new HashMap<>();
    hs1.put(1,"ram");
    hs1.put(2,"sita");
    hs1.put(3,"laxman");
    hs1.put(4,"hanuman");
    hs1.put(5,"geeta");

    HashMap<Integer,String> hs2 = new HashMap<>();
    hs2.put(5,"rat");
    hs2.put(6,"lion");
    hs2.put(7,"tiger");
    hs2.put(8,"fish");
    hs2.put(9,"hen");

    HashMap<Integer,String> hs3 = new HashMap<>();//Map is which we add

    hs3.putAll(hs1);
    hs3.putAll(hs2);

    System.out.println(" hs1 : " + hs1);
    System.out.println(" hs2 : " + hs2);
    System.out.println(" hs3 : " + hs3);

Повторяющиеся элементы не будут добавлены (то есть дубликаты ключей), так как при печати hs3 мы получим только одно значение для ключа 5, которое будет последним добавленным значением, и это будет крыса. ** [Set имеет свойство не разрешать дубликат ключа, но значения могут быть повторены]

0 голосов
/ 15 марта 2016

вы можете использовать - метод addAll

http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html

Но всегда есть проблема, что - если у ваших двух хеш-карт есть какой-либо одинаковый ключ - тогда он переопределит значение ключа из первой хеш-карты на значение ключа из второй хеш-карты.

Для большей безопасности - измените значения ключей - вы можете использовать префикс или суффикс на ключах - (другой префикс / суффикс для первой карты хэша и другой префикс / суффикс для второй карты хэша)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...