Как проверить, существует ли ключ в HashMap в Java

Проверка на существование значения в HashMap привычная задача. Однако иногда необходимо проверить существование непосредственно ключа.

Входящий HashMap: {1 = Bolotnikoff, 2 = is, 3 = cool}, ключ = 3
Возврат: true

Входящий HashMap: {1 = B, 2 = o, 3 = l, 4 = o, 5 = t, 6=n, 7=i, 8=k, 9=o, 10=f, 11=f}, ключ = 75
Возврат: false

Итеративный метод (неэффективно):

Предположим, мы циклом проверяем каждое значение на соответствие нашему ключу.

К примеру так:

...
import java.util.*; 

public class KeyCheck {
   public static void main(String[] args){
      //Искомый ключ
      int keyToCheck = 2;

      //Создадим HashMap 
      HashMap<Integer, String> map = new HashMap<>(); 
      map.put(1, "Bolotnikof"); 
      map.put(2, "is"); 
      map.put(3, "cool"); 
        
      //Отобразим нашу HashMap
      System.out.println("HashMap: "+ map);

      //Получим итератор 
      Iterator<Map.Entry<Integer, String>> 
                   iterator = map.entrySet().iterator();

      // flag to store result 
      boolean isKeyPresent = false;

      //Обойдем нашу HashMap 
      while (iterator.hasNext()) { 
            Map.Entry<Integer, String> entry = iterator.next(); 
            //Сравним ключ с искомым 
            if (keyToBeChecked == entry.getKey()) { 
                  isKeyPresent = true; 
            } 
      } 
      System.out.println("Ключ " + keyToCheck + " "
                  + isKeyPresent ? "присутствует":"отсутствует"
                  + "в HashMap"); 
   } 
}
HashMap: {1 = Bolotnikoff, 2 = is, 3 = cool}
Ключ 2 присутствует в HashMap

Очевидно данный способ совершенно не работоспособен если значение одного из ключей null , и вместо результата мы получим любимую всеми java.lang.NullPointerException

Метод HashMap.containsKey (эффективно) :

Без лишних слов, вот как это выглядит:

...
boolean isKeyPresent = map.containsKey(keyToCheck);
...

Разработчики Java позаботились о программистах и реализовали удобный метод.

Поделиться этим материалом