# HashMap

Слово HashMap содержит слово map — карта. Только не пытайтесь найти сходство с картами в географическом атласе, с гуглокартами, с Яндекс.Картами или, на худой конец, с игральными картами. Это карточка в картотеке. Вы заполняете карточки какими-то данными и кладёте их в ящик. Если вы содержите гостиницу для котов, то скорее всего вы занесёте в карточку имя кота, возраст и т.п.

Класс HashMap использует хеш-таблицу для хранения карточки, обеспечивая быстрое время выполнения запросов get() и put() при больших наборах. Класс реализует интерфейс Map (хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. При этом все ключи обязательно должны быть уникальны, а значения могут повторяться. Данная реализация не гарантирует порядка элементов.

Общий вид HashMap:

```
class HashMap<K, V>
// K - это Key (ключ), V - Value (значение)
```

Объявить можно следующим образом:

```
Map<String, Integer> hm = new HashMap<String, Integer>();
// или так
Map<String, String> hashmap = new HashMap<String, String>();
```

Пример:

```
// Создадим HashMap
Map<String, Integer> hm = new HashMap<String, Integer>();

// Помещаем данные на карточку
hm.put("Васька", new Integer(5));
hm.put("Мурзик", new Integer(8));
hm.put("Рыжик", new Integer(12));
hm.put("Барсик", new Integer(5));

// Получаем набор элементов
Set<Map.Entry<String, Integer>> set = hm.entrySet();

// Отобразим набор
for (Map.Entry<String, Integer> me : set) {
    System.out.print(me.getKey() + ": ");
    System.out.println(me.getValue());
}

// Добавляем значение
int value = hm.get("Рыжик");
hm.put("Рыжик", value + 3);
System.out.println("У Рыжика стало " + hm.get("Рыжик"));
```

Вопрос 1.

Если необходимо создать список фамилий с номерами паспортов, какое из этих значений занести в key, а какое в value? Почему?

Вопрос 2.

Что произойдет при попытке внести в HashMap пару ключ-значение с уже существующим ключом?


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://comaqa.gitbook.io/java-automation/kollekcii/hashmap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
