Sobes.tech
Junior

Ποιες συλλογές υπάρχουν στη Java;

sobes.tech AI

Απάντηση από AI

Το πλαίσιο συλλογών της Java παρέχει πολλές συλλογές για την αποθήκευση και διαχείριση δεδομένων. Οι κύριες διεπαφές και οι υλοποιήσεις τους:

  • Collection: βασική διεπαφή.
    • List: διατεταγμένη συλλογή που επιτρέπει διπλότυπα.
      • ArrayList: βασίζεται σε πίνακα, γρήγορη πρόσβαση μέσω δείκτη, αργή εισαγωγή/διαγραφή στη μέση.
      • LinkedList: βασίζεται σε διπλά συνδεδεμένη λίστα, γρήγορη εισαγωγή/διαγραφή, αργή πρόσβαση μέσω δείκτη.
      • Vector: thread-safe έκδοση του ArrayList, παρωχημένο.
      • Stack: βασίζεται σε Vector, αρχή LIFO.
    • Set: συλλογή μοναδικών στοιχείων, χωρίς συγκεκριμένη σειρά (εκτός από το SortedSet).
      • HashSet: βασίζεται σε πίνακα κατακερματισμού, γρήγορη πρόσβαση και εισαγωγή/διαγραφή.
      • LinkedHashSet: διατηρεί τη σειρά εισαγωγής.
      • TreeSet: αποθηκεύει στοιχεία σε ταξινομημένη σειρά.
    • Queue: συλλογή στοιχείων, συχνά χρησιμοποιείται για την αποθήκευση πριν από την επεξεργασία σε FIFO σειρά.
      • PriorityQueue: στοιχεία εξάγονται με βάση την προτεραιότητά τους.
      • ArrayDeque: διπλή ουρά.
    • Deque: διπλή ουρά, μπορεί να προσθέτει και να αφαιρεί στοιχεία και από τις δύο άκρες.
  • Map: αποθηκεύει ζεύγη κλειδιού-τιμής, τα κλειδιά είναι μοναδικά.
    • HashMap: βασίζεται σε πίνακα κατακερματισμού, γρήγορη πρόσβαση μέσω κλειδιού.
    • LinkedHashMap: διατηρεί τη σειρά εισαγωγής ή πρόσβασης.
    • TreeMap: αποθηκεύει ζεύγη σε ταξινομημένη σειρά με βάση τα κλειδιά.
    • Hashtable: thread-safe έκδοση του HashMap, παρωχημένο.

Συλλογές ασφαλείς για νήματα:

  • Collections.synchronized*: περιτυλίγματα πάνω από υπάρχουσες συλλογές.
  • Concurrent*: πακέτο java.util.concurrent, συλλογές με βελτιωμένη απόδοση σε ανταγωνιστικά περιβάλλοντα.
    • ConcurrentHashMap
    • CopyOnWriteArrayList
    • ConcurrentLinkedQueue

Και άλλες λιγότερο συνηθισμένες συλλογές.