Clojure's persistent vectors and hashmaps are both the same data structure, the hash array mapped trie, which can be implemented both simply and efficiently. If you look at the Java code in the Clojure source, there are no tricks, beyond the cleverness of the HAMT itself.