Проверка на существование значения в 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 позаботились о программистах и реализовали удобный метод.