Given the number of collection classes, the difficulty is sometimes in deciding which one to use for a particular need. The following guidelines outline some recommendations you should consider when making this choice:
-
Use the general-purpose implementations in the collections framework instead of Vector, Stack, and Hashtable, unless you are restricted to a JDK 1.1.x version.
-
Use ArrayList for ordered collections (instead of Vector ).
-
Use HashSet for unordered collections.
-
Use HashMap for key-value associations (instead of Hashtable ).
-
Use ArrayList when random access of the elements is more important than the time required to perform inserts and removals in the middle of the list.
-
Use LinkedList when the performance of inserts and removals is more important than that of locating specific elements.
-
Use TreeMap when you need to iterate over a set of key-value pairs in sorted key order.
-
Use TreeSet when you need to maintain a set of objects in sorted order.
-
Use the synchronized wrappers provided by the Collections class if thread safety is an issue; avoid their overhead if it isn't.