Question:
Is there a significant speed advantage to using Hashtables over Vectors?
Answer:
The answer depends on how you are using those containers classes. Ifyou are only using them for storage, then a Vector will be moreefficient. A Vector stores its elements in an array that is resizedwhen its capacity is exceeded. Cycling through elements of a Vectorwith an Iterator or Enumeration can be very efficient because it onlyrequires indexing into an array.
However, if you intend to randomlyaccess the container values based on an arbitrary set of keys, then aHashtable will be more appropriate since a Vector does not supportthat functionality. If you want to use the containers primarily fordoing value-based lookups, then neither is appropriate. Searchingthrough a Vector is O(n), which means that given n elements, you mayhave to look at every element before finding what you are lookingfor. Unless you use a value as its own key, a Hashtable will beequally poor. You should also keep in mind that the methods of bothVector and Hashtable are synchronized, which can reduce performancefor sequential programs. You should instead try to use ArrayList andHashMap, which are found in the Java 2 Platform.