Когда вы смотрите на это с точки зрения кого-то, кто хочет реализовать поведение псевдомассива Javascript, вы правы, что хеш-таблица - лучший способ сделать это, особенно. поскольку массивы Javascript не имеют фиксированной длины и должны быть в состоянии разместить записи в любом индексе. Массивы в Javascript просто выглядят как массивы, но ведут себя больше как хеш-таблицы.
Но на языке, который немного ближе к машине, преимущества в производительности и использовании реального массива для данных, которые могут быть эффективно сохранены в массиве, заслуживают особого внимания, тем более что преимущества использования хеш-таблиц для этого довольно ограничено разреженными массивами, а это не то, для чего вы должны или должны использовать массив. На самом деле это лучше сделать с помощью хеш-таблиц с целочисленными ключами.
Вставка, поиск и удаление также являются O (1) для массивов во всех случаях, но имеют гораздо более низкую постоянную O, чем хеш-таблицы (это не только из-за локальности кэша). И массивам нужно меньше места для каждой записи. Если вы хотите удалить и вставить записи таким образом, чтобы следующие записи соответствующим образом изменили свой индекс, это будет O (n), где n соответствует количеству записей, которые необходимо переместить, но это также будет O (n). для хэш-таблиц, чтобы сделать это и снова с гораздо более высокими постоянными издержками. Это та операция, для которой вам лучше использовать связанный список. Кроме того, увеличение массива обходится дешевле, чем создание хеш-таблицы, которая может потребовать перефразирования всех его записей.
У всех различных типов коллекций есть свои преимущества и недостатки. Вот почему их так много.