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