Мне любопытно знать то, что является обоснованием, которое могло перевешивать к использованию самоуравновешивающейся древовидной техники для хранения объектов, чем использование хеш-таблицы.
Я вижу, что хеш-таблицы не могут поддержать порядок вставки, но я мог всегда использовать связанный список на вершине для хранения последовательности порядка вставки.
Я вижу, что для небольшого количества значений, существует добавленная стоимость хеш-функции, но я мог всегда сохранять хеш-функцию вместе с ключом для более быстрых поисков.
Я понимаю, что хеш-таблицы трудно реализовать, чем простая реализация красно-черного дерева, но в практической реализации разве нельзя было бы быть готовой пойти дополнительная миля для проблемы?
Я вижу, что с хеш-таблицами нормально для коллизий произойти, но с открыто обращающимися методами как двойное хеширование, которые позволяют сохранять ключи в самой хеш-таблице, разве проблема не была уменьшена до эффекта не добавления подсказки пользы к красным черным деревьям для таких реализаций?
Мне любопытно, если я являюсь строго пропавшим недостаток хеш-таблицы, которая все еще делает красные черные деревья довольно жизнеспособной структурой данных в практическом применении (как файловые системы, и т.д.).
Вот что я могу придумать:
Распределение хранилища - еще один момент. Каждый раз, когда вы заполняете все ведра в хэш-таблице, вам нужно выделять новое хранилище и заново все хэшировать. Этого можно избежать, если заранее знать размер данных. С другой стороны, сбалансированные деревья вообще не страдают от этой проблемы.
По моему скромному мнению, самобалансирующиеся деревья довольно хорошо работают в качестве академических тем. И я не знаю ничего, что можно было бы квалифицировать как "прямолинейную реализацию red-black tree".
В реальном мире стена памяти делает их гораздо менее эффективными, чем на бумаге.
Учитывая это, хэш-таблицы являются достойной альтернативой, особенно если вы не практикуете их в академическом стиле (забудьте об ограничении на размер таблицы, и вы волшебным образом решите проблему изменения размера таблицы и почти все проблемы с коллизиями).
Одним словом: будьте проще. Если это просто для вас, то это просто и для вашего компьютера.