Почему результат объединения двух hashMap не является corecct? - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть две HashMap, первая имеет 3149 записей, а вторая 5440 записей, когда я объединяю их, размер результата меньше, чем 3149 + 5440.Почему и как я могу это решить?

Map<String,String> bigMap = new HashMap<String, String>();
bigMap.putAll(hashMap1);
bigMap.putAll(hashMap2);

int j = 0;
for (Map.Entry<String, String> entry : bigMap.entrySet()) {
  System.out.println(j++);
}

Я также проверял этот код, чтобы убедиться, что есть какой-то общий ключ.

for (Map.Entry<String, String> entry : readCsv(hashMap1).entrySet()) {
    String key = entry.getKey(); 
    String value = entry.getValue();  
    if(entry.getKey().equals(hashMap2).get(key))){
        System.out.println(i++);
    } 
}

Ответы [ 3 ]

4 голосов
/ 01 февраля 2012

Ваши hashMap1 и hashMap, вероятно, имеют несколько одинаковых клавиш. Вот почему некоторые записи переопределяются другими записями с похожими ключами.

3 голосов
/ 01 февраля 2012

Если у вас одинаковые ключи на картах, то этого следовало ожидать. Ключи должны быть уникальными на карте. Если вы поместите значение в карту с ключом, который уже существует, то существующее значение будет перезаписано.

1 голос
/ 01 февраля 2012

Чтобы найти общие ключи, вы можете сделать

Set<String> common = new HsahSet<String>(hashMap1.keySet());
common.retainAll(hashMap2.keySet());
System.out.println("Common Keys " + common);
...