Для вашего примера, иметь HashMap, но затем выполнять итеративный поиск, кажется плохой идеей.Смысл использования HashMap в том, чтобы иметь возможность выполнять поиск на основе хеша.Это намного быстрее, чем выполнение итеративного поиска.
Кроме того, из вашего примера каскадные тесты if-then будут определенно быстрее, поскольку они позволят избежать накладных расходов итератора карты и дополнительных вызовов функций.Кроме того, они будут избегать накладных расходов итератора карты, пропуская пустые места хранения в массиве поддержки хэш-карты.Лучший вопрос заключается в том, быстрее ли каскадные if-thens, чем итерации по простому списку.Это трудно ответить.Каскадное if-thens кажется более быстрым, за исключением того, что если есть много if-thens, то следует добавить стоимость загрузки кода.
Для поиска строк структура данных списка обеспечивает адекватное поведениедо предельного значения, выше которого должна использоваться более сложная структура данных.Какое предельное значение зависит от окружающей среды.Для сравнения строк я обнаружил переход между 20 и 100 элементами.
Для определенных поисков и при наличии оптимизации низкого уровня значение перехода может быть намного больше.Например, при целочисленном поиске с использованием «C», который может выполнять прямой поиск в памяти, значение перехода намного выше.
Типичными структурами данных являются HashMaps, Tries и отсортированные массивы.Каждый соответствует определенным схемам доступа.Например, отсортированные массивы являются самыми быстрыми и компактными, но их обновление дорого.HashMaps поддерживают динамические обновления, а для хороших хеш-функций обеспечивают постоянный поиск по времени.Но HashMaps неэффективны в пространстве, так как они зависят от наличия пустых ячеек между значениями хеш-функции.
Для случаев, которые не включают «очень большие» наборы данных и которые не находятся в критических «горячих» путях кода, HashMapsобычная структура, которая используется.