Assuming we're talking about a vanilla integer-indexed array, stored in a single contiguous piece of memory, indexing into it is typically performed by a single addition, making the access constant time.
http://en.wikipedia.org/wiki/Array_data_structure#Efficiency
Likewise, hash tables typically provide constant-time access, though that constant is pretty much guaranteed to be larger than array indexing's constant, because hash tables are more complex and generally built on top of arrays. Reasonable hash functions alone require much more than a single add operation.
http://en.wikipedia.org/wiki/Hash_table#Performance_analysis