Hashtable is a legacy implementation of a map or key-value pairs in Java. It uses a hash table to store keys and values, where the key is used to find the corresponding value. Hashtable does not allow null keys or values. It is synchronized, which makes it slower than newer implementations like HashMap. Hashtable uses separate chaining to handle collisions when multiple keys hash to the same bucket.