Why is accessing an element of a dictionary by key O(1) even though the hash function may not be O(1)?

monogate picture monogate · May 20, 2016 · Viewed 18.4k times · Source

I see how you can access your collection by key. However, the hash function itself has a lot of operations behind the scenes, doesn't it?

Assuming you have a nice hash function which is very efficient, it still may take many operations.

Can this be explained?

Answer

Paarth picture Paarth · May 20, 2016

O(1) doesn't mean instant. O(1) means constant without regard to the size of the data. The hash function takes a certain amount of time, but that amount of time doesn't scale with the size of the collection.