Πως επιλέγω το κατάλληλο 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
Facebook Comments