Как найти те же ключи и значения в HashMap - PullRequest
0 голосов
/ 19 марта 2019

У меня есть HashMap с именами (ключ) и датами (значение), и мне нужно показать, является ли имя, которое я ввожу снова, является дубликатом (я занимаюсь программированием сокетов с разными состояниями).Например, я вставил в карту 3 разных имени и в четвертый раз поставил повторяющееся имя.

Я пробовал эти коды (они запускаются), но безуспешно:

HashMap<String, String> map = new HashMap<String, String>();

if(stat.equals("RECEIVE_NAME")){
   name = reader.readLine();
   if(map.containsKey(name)){
      System.out.println("duplicate");
   }
}

или

for(Map.Entry<String, String> entry : map.entrySet()){
   if(name.equals(entry.getKey())){
      sendMessage("duplicate");
   }
}

Примечание: У меня есть map.put (name) , когда после этой последовательности блоков не повторяется.И я знаю, что хэш-карта не может иметь дубликаты ключей:)

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

map.put() возвращает предыдущее значение, связанное с ключом, или ноль, если не было сопоставления для ключа. Таким образом, вы можете сохранить это возвращаемое значение и проверить, не является ли оно нулевым:

String check = map.put(name);
if(check != null){
    System.out.println("dup: " + check);
}

Используйте map.putIfAbsent(name), чтобы не перезаписывать соответствующее значение.

0 голосов
/ 19 марта 2019

HashMap не может содержать дубликаты ключей.Если вы поместите пару ключ-значение в карту, которая уже содержит ключ, старое значение будет заменено новым значением.

...