Pascal4eg

 Java | Фишки и трюки

HashMap

// Создание и заполнение HashMap
Map hashMap = new HashMap<>();
hashMap.put("one", 1);
hashMap.put("two", 2);
hashMap.put("three", 3);

// Получение значения по ключу
int value = hashMap.get("two");
System.out.println("Value for key 'two': " + value);

HashMap - это реализация интерфейса Map, которая представляет собой структуру данных, которая позволяет хранить пары ключ-значение и обеспечивает эффективный доступ к значениям по ключу. HashMap основан на хеш-таблице, что позволяет достигать высокой производительности при операциях вставки, удаления и поиска элементов. Вот как это работает:

  1. Вставка элемента:
    При вставке элемента в HashMap, вы передаете ключ и значение. Сначала вычисляется хеш-код ключа с использованием метода hashCode(). Затем этот хеш-код преобразуется в индекс внутреннего массива (бакета) с помощью функции хеширования (обычно путем выполнения операции % на размере массива). Если в соответствующем бакете уже есть элементы, то новый элемент может быть добавлен в виде связанного списка или более сложной структуры данных, в зависимости от реализации HashMap.
  2. Поиск элемента:
    Для поиска значения по ключу, вы передаете ключ методу get(). Здесь снова вычисляется хеш-код ключа и определяется индекс бакета. Затем HashMap проверяет все элементы в этом бакете, чтобы найти соответствующий ключ. Если есть несколько элементов с одинаковым хеш-кодом (коллизия), они могут быть проверены последовательно, пока не будет найден элемент с соответствующим ключом.
  3. Удаление элемента:
    При удалении элемента по ключу, HashMap также вычисляет хеш-код ключа и находит соответствующий бакет. Затем элемент удаляется из этого бакета. Если в бакете есть несколько элементов, они могут быть перебраны для поиска правильного элемента.

Важно отметить, что хеширование и коллизии могут повлиять на производительность HashMap. Хорошая реализация должна уметь эффективно обрабатывать коллизии, чтобы обеспечить быстрый доступ к элементам.

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