Junior — Middle
Ποια είναι η διαφορά μεταξύ της υλοποίησης της συλλογής Set και της συλλογής ArrayList στη Java;
sobes.tech AI
Απάντηση από AI
Η βασική διαφορά μεταξύ των συλλογών Set και ArrayList στη Java βρίσκεται στη συμπεριφορά και την υλοποίησή τους:
- Set — είναι μια συλλογή που δεν επιτρέπει διπλότυπα στοιχεία. Η σειρά των στοιχείων δεν εγγυάται (π.χ., στο HashSet), αν και υπάρχουν υλοποιήσεις με ταξινόμηση (TreeSet, LinkedHashSet).
- ArrayList — είναι μια ταξινομημένη λίστα που επιτρέπει διπλότυπα και διατηρεί τη σειρά προσθήκης.
Από την άποψη της υλοποίησης:
- Το ArrayList βασίζεται σε έναν πίνακα που επεκτείνεται δυναμικά κατά την προσθήκη στοιχείων. Γρήγορη πρόσβαση με δείκτη.
- Το HashSet υλοποιείται συνήθως πάνω σε HashMap, όπου τα στοιχεία λειτουργούν ως κλειδιά. Αυτό διασφαλίζει γρήγορη αναζήτηση και έλεγχο μοναδικότητας.
Παράδειγμα:
Set<String> set = new HashSet<>();
set.add("apple");
set.add("apple"); // δεν θα προστεθεί δεύτερη φορά
List<String> list = new ArrayList<>();
list.add("apple");
list.add("apple"); // και τα δύο στοιχεία θα προστεθούν