Sobes.tech
Junior

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

sobes.tech AI

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

Στη Java, υπάρχουν τα ακόλουθα βασικά interfaces συλλογών που ανήκουν στο Java Collections Framework:

  • Collection: Βασικό interface που ορίζει κοινές λειτουργίες για ομάδες αντικειμένων. Κληρονομείται από τα υπο-interfaces:

    • List: Ταξινομημένη συλλογή (ακολουθία). Τα στοιχεία μπορούν να επαναληφθούν. Υποστηρίζει πρόσβαση με δείκτη.
      • ArrayList: Ευέλικτος πίνακας. Καλός για γρήγορη πρόσβαση με δείκτη και προσθήκη στο τέλος. Αργός για εισαγωγή/διαγραφή στη μέση.
      • LinkedList: Διπλά συνδεδεμένη λίστα. Καλό για εισαγωγή/διαγραφή στην αρχή ή το τέλος. Αργό για πρόσβαση με δείκτη.
      • Vector: Συγχρονισμένη έκδοση του ArrayList. Θεωρείται παρωχημένο.
      • Stack: Κληρονομεί από το Vector, υλοποιεί συμπεριφορά στοίβας (LIFO).
    • Set: Συλλογή που περιέχει μόνο μοναδικά στοιχεία. Δεν εγγυάται σειρά.
      • HashSet: Υλοποιείται με πίνακα κατακερματισμού. Το πιο γρήγορο για προσθήκη, διαγραφή και έλεγχο ύπαρξης. Δεν εγγυάται σειρά.
      • LinkedHashSet: Υλοποιείται ως πίνακας κατακερματισμού + συνδεδεμένη λίστα. Εγγυάται τη σειρά εισαγωγής.
      • TreeSet: Υλοποιείται με κόκκινο-μαύρο δέντρο. Αποθηκεύει στοιχεία σε ταξινομημένη σειρά. Αργότερο από το HashSet, αλλά ταχύτερο από το LinkedHashSet για εύρεση εύρους.
    • Queue: Συλλογή σχεδιασμένη για αποθήκευση στοιχείων πριν από την επεξεργασία (FIFO - First-In, First-Out).
      • PriorityQueue: Τα στοιχεία αποθηκεύονται σύμφωνα με την φυσική τους σειρά ή έναν συγκριτή. Αφαιρεί το στοιχείο με την υψηλότερη προτεραιότητα.
      • Deque: (Double Ended Queue) Υποστηρίζει εισαγωγή και διαγραφή και από τις δύο άκρες.
        • ArrayDeque: Υλοποίηση Deque βασισμένη σε πίνακα. Πιο αποδοτική από το LinkedList ως ουρά/στοίβα.
  • Map: Συλλογή που αποθηκεύει ζεύγη κλειδιού-τιμής. Τα κλειδιά είναι μοναδικά.

    • HashMap: Υλοποιείται με πίνακα κατακερματισμού. Το πιο γρήγορο για προσθήκη, διαγραφή και έλεγχο ύπαρξης. Δεν εγγυάται σειρά κλειδιών.
    • LinkedHashMap: Υλοποιείται ως πίνακας κατακερματισμού + συνδεδεμένη λίστα. Εγγυάται τη σειρά εισαγωγής ή πρόσβασης.
    • TreeMap: Υλοποιείται με κόκκινο-μαύρο δέντρο. Αποθηκεύει ζεύγη κλειδιού-τιμής σε ταξινομημένη σειρά κατά κλειδί. Αργότερο από το HashMap.
    • HashTable: Συγχρονισμένη έκδοση του HashMap. Θεωρείται παρωχημένο.

Επίσης, υπάρχουν παρωχημένες κλάσεις που δεν ανήκουν στο JCF, αλλά συχνά συναντώνται:

  • Vector
  • Stack
  • Hashtable
  • Enumeration (interface)