This QA How does Java implement hash tables? describes that Hashtable is implemented via static array in Java (the underlying static array will be refined according to the total number of items).
Why doesn’t Java implement Hashtable via dynamic array, such as ArrayList?
What are the tradeoffs?
When a hashtable is resized, all of the entries need to be re-positioned.
Using an ArrayList would therefore be slower, since the ArrayList would copy over the now-useless old values before the HashTable re-calculates them all.