Each hour on the clock is a bucket, and the whole ring is one array. To place a key, the hand at the hub winds that many hours round, starting from 0: on an 8-hour clock, 57 is seven full turns and one more, so 57 goes in bucket 1. That is 57 mod 8. The computer does it with one division, so it costs the same for every key, and every bucket is one jump from the hub.
A collision is two keys winding round to the same hour. Chaining keeps a small linked list in every bucket, drawn as a tower with a wire pointer to each next key. Linear probing keeps one key per bucket: a key that finds its bucket taken tries the next one, and a delete leaves a tombstone so later searches know to keep walking.
The gauge is the load factor, α = keys ÷ buckets. Past ¾ the table doubles and every key is rehashed. The chart on the right shows what each operation really cost: nearly always one or two looks, occasionally a spike. O(1) is that average, and it only holds while the hash spreads keys evenly. Try Unlucky keys.