In the Collections Framework, there are many implementation classes to choose from. Most of the time, one of these "primary implementations" is the appropriate choice
- ArrayList, for an implementation of the List interface
- LinkedHashMap, for an implementation of the Map interface
- LinkedHashSet, for an implementation of the Set interface
- ArrayDeque, for an implementation of both the the Deque and Queue interfaces
Before JDK 1.5, HashMap and HashSet were the preferred implementations of Map and Set. However, the iterators returned by those classes have the somewhat bizarre property of having an undefined order. That is, iterating over a HashMap or HashSet can return elements in a different order at different times. Their iteration order is not guaranteed to be repeatable (and often isn't). Even though HashMap and HashSet have slightly better overall performance, for most business applications it is likely best to avoid such undefined behavior.