What are the key differences in Java when comparing HashMap vs Hashtable?

Also, which one offers better efficiency in non-threaded (single-threaded) applications?