Is there a significant speed advantage to using Hashtables over Vectors?
The answer depends on how you are using those containers classes. If
you are only using them for storage, then a Vector will be more
efficient. A Vector stores its elements in an array that is resized
when its capacity is exceeded. Cycling through elements of a Vector
with an Iterator or Enumeration can be very efficient because it only
requires indexing into an array.
However, if you intend to randomly
access the container values based on an arbitrary set of keys, then a
Hashtable will be more appropriate since a Vector does not support
that functionality. If you want to use the containers primarily for
doing value-based lookups, then neither is appropriate. Searching
through a Vector is O(n), which means that given n elements, you may
have to look at every element before finding what you are looking
for. Unless you use a value as its own key, a Hashtable will be
equally poor. You should also keep in mind that the methods of both
Vector and Hashtable are synchronized, which can reduce performance
for sequential programs. You should instead try to use ArrayList and
HashMap, which are found in the Java 2 Platform.