Hashtable and Vector are legacy collection classes - they are old collection classes that have existed since
Java 1.0 (or maybe even earlier).
In Java 1.2 (long ago), new collection classes were added such as HashMap and ArrayList, which more or less replace the old classes. When Sun was developing Java 1.2, they realized that most people don't need synchronization (in most programs, collections are not accessed by multiple threads at the same time), so they left the new collection classes without synchronization. Note that synchronization adds some runtime overhead, so the unsynchronized collections perform better than the synchronized ones.
You should always use the new collection classes. If you need synchronization, you can use utility methods in class
Collections to add synchronization wrappers to your collections (for example
Collections.synchronizedList(...) etc.), or you can look at the specialized collection classes in package
java.util.concurrent.