Hola compañero. Como bien dices, lo mas rapido es una vector multidimensional, y tambien lo mas complicado de codificar en segun que circustancias.
Sobre las funciones Java, no conozco ninguna comparativa entre ellas de rendimiento, pero si que cada una hace cosas diferentes, asi que cuanto mas simple sea su cometido, posiblemente mas rapida será.
-Hashtable / Hashmap : Es una tabla de hash de toda la vida, metes una "llave" (para buscar el valor) y el valor en si. Con la "llave" recuperas el valor.
La diferencia entre ellas es que Hashtable esta synchronized (permite acceso concurrente) y Hashmap no lo esta, no permite acceso concurrente.
Por lo cual, si no usas concurrencia, sera mas efectiva Hashmap
-Hashset : Es un conjunto. Tu ahi metes elementos, y te dice si esta o no dentro el elemento.
Tambien puedes recorrerlo. La funcion es diferente a la de una tabla de hash
Espero sirva de ayuda, si necesitas algo preguntame (aunque del Java estoy un poco desconectado)