Choosing the right collection
Here is a quick guide for selecting the proper implementation of a Set, List, or Map in your application.
The best general purpose or ‘primary’ implementations are likely ArrayList, LinkedHashMap, and LinkedHashSet. Their overall performance is better, and you should use them unless you need a special feature provided by another implementation. That special feature is usually ordering or sorting.
Principal features of non-primary implementations :
- HashMap has slightly better performance than LinkedHashMap
- HashSet has slightly better performance than LinkedHashSet
- TreeSet is ordered and sorted, but slow
- TreeMap is ordered and sorted, but slow
- LinkedList has fast adding to the start of the list, and fast deletion from the interior via iteration
Iteration order for above implementations :
- HashSet - undefined
- HashMap - undefined
- LinkedHashSet - insertion order
- LinkedHashMap - insertion order of keys (by default), or ‘access order’
- ArrayList - insertion order
- LinkedList - insertion order
- TreeSet - ascending order, according to Comparable / Comparator
- TreeMap - ascending order of keys, according to Comparable / Comparator
For LinkedHashSet and LinkedHashMap, the re-insertion of an item does not affect insertion order.
While being used in a Map or Set, these items must not change state (hence, it is recommended that these items be immutable objects):
- keys of a Map
- items in a Set
Sorting requires either that :
To retain the order of a ResultSet as specified in an ORDER BY clause, insert the records into a List or a LinkedHashMap.
|Linked data based integration|
|New Date and Time API in Java8|
|Re-platformig this blog to Wintersmith|
|Improving code quality in agile teams|