JavaにおいてHashMapとHashtableの違いはいくつかありますが、だいたいはあなたがおっしゃっているのと同じです。
一応まとめてみると、
- HashMapは同期されないがHashtableは同期される。(同期が無い分、HashMapの方が高速。)
- Hashtableはnullのkeyやnullのvalueを許可しないが、HashMapは1つのnull keyおよび複数のnullのvalueを許可する。
- HashMapはkeyのコレクション順が一定ではない。
スレッドセーフを意識する必要の無いアプリケーションに対し、効率よく働いてくれるのはHashMapだと思いますね。
なぜなら、同期が不要なオブジェクトのほうが同期が必要なオブジェクトと比べ典型的に良いパフォーマンスを実行するからです。
なので、同期という点があなたにとってさほど重要なポイントでないなら、私はHashMapをお勧めします。
もし、同期が重要ポイントなのであれば、スレッドセーフなConcurrentHashMapを使うことも検討してみてください。