Материал взят с книги Брэда Миллер и Дэвид Рэнума "Аспекты связанные со структурами и алгоритмами". Хэш-таблица - это коллекция элементов, которая сохраняется таким образом, чтобы позже их было легко найти. Каждая позиция в хэш-таблице (slot или bucket) может содержать элемент и целое число, начинающиеся с нуля. Связь между элементом и слотом, в который он кладётся, называется хэш-функцией. Она принимает любой элемент из коллекции и возвращает целое число из диапазона имён слотов. Для вычисления хэш значения и перехода по заданному индексу требуется константное время O(1). Но такое корректно, если каждый элемент сопоставлен уникальной позиции (идеальная хэш функция). Если же в одном слоте лежит несколько элементов, то возникают "коллизии", которые увеличивают временную сложность. Для борьбы с коллизиями применяют разные методы, среди них: 1) Метод остатков - берёт элемент и делим его на размер таблицы, возвращая остаток в качестве хэша. 2) Метод свёртки - разбиваем элемент на состав