An index isn't a table, it is an index. There are multiple kinds of indexes, some ordered, some not. An index might internally be a hash table, a btree, a balanced tree, or something completely different. An index will not be a sorted linear list, as those are too expensive to update. Tables are not sorted, because there's no point. That's what indexes are for.
What is stored in an index is likely the key used to generate the index and a reference to the row it is from. Tables are not arrays, so indexes probably won't be storing integers to reference the rows. How an index references rows in a table is an implementation detail that is different in every database and will be unique to the way the database stores its tables.
Also, an index is unlikely to store a hash, as the hash can be generated from the key and the hash is only used to find the key in the index. If it is an ordered index, it wouldn't need a hash.
Any operation that affects the fields in a table that are the keys the index uses will cause the index to be updated. Generally, indexes are NOT recalculated -- they are just incrementally updated, and they use data structures that support that. However, there may also be some other index specific and whole table operations (like create index or repair table) that may cause an index to be calculated for every row. Also, some databases support temporarily disabling indexes for mass data inserts, and then recalculate the index once when the operation completes.