Πως επιλέγω το κατάλληλο Implementation για το Collection μου

Συχνά στους junior programmers έρχομαι αντιμέτωπος με το πρόβλημα του να χρησιμοποιούν ένα  collection implementation, συνήθως  ArrayList ή HashSet, επειδή απλά αυτό βλέπουν συχνά χωρίς να ξέρουν τις ιδιαιτερότητές του με αποτέλεσμα διάφορα προβλήματα όπως να χάνεται η σειρά ενώ τη χρειάζονται, να χάνονται διπλές εγγραφές κλπ.

Οπότε αποφάσισα να γράψω αυτόν τον οδηγό για την κατάλληλη επιλογή του

  1. Θέλω Λίστα
    1. Θέλω διπλές εγγραφές: ArrayList
    2. ΔΕΝ θέλω διπλές εγγραφές
      1. ΔΕΝ θα ψάχνω συχνά για contains: ArrayList
      2. Θα ψάχνω συχνά για contains αλλά δεν με ενδιαφέρει η σειρά: HashSet
      3. Θα ψάχνω συχνά για contains Ή με ενδιαφέρει η σειρά εισαγωγής:LinkedHashSet
      4. Θα ψάχνω συχνά για contains Ή με ενδιαφέρει η αυτόματη ταξινόμηση:TreeHashSet
  2. Θέλω key/value ζεύγη
    1. Δεν με ενδιαφέρει η σειρά: HashMap
    2. Με ενδιαφέρει η σειρά και συγκεκριμένα:
      1. Αυτόματη ταξινόμηση των κλειδιών: TreeMap
      2. Διατήρηση της σειράς εισαγωγής: LinkedHashMap

Τα παραπάνω τα έβαλα και σε μια εικόνα για μεγαλύτερη ευκολία

Java Collections Cheat Sheet
Java Collections Cheat Sheet

Passionate Archer, Runner, Linux lover and JAVA Geek! That's about everything! He has worked for many years as an Software Architect designing and developing enterprize projects, e-banking and high availability portals with extensive experience in the public, european and private sectors. Having speaker in several confrences he never misses opportunities to interact with the OSS community. In his leisure time he either runs or shoots a lot of arrows!