Immutable/persistent data structures are almost always some sort of tree, even if on the outside they look different. Knowing that all your operations that were constant (for the mutable case) are now logarithmic (for the immutable case) is a must.
Modern HAMTs are faster than your run of the mill hash table, the "constant" vs. "logarithmic" is misleading here.
The HAMT will be log32 or log16 N and will have runs of values that play very nicely with the caching behavior of the processor if you find yourself traversing more than one value.
Boils down to same toolkit though, lists, vectors, trees, and key-value maps.
I benefit from the use of immutable or structure-sharing persistent data structures even in languages that don't natively support them.