Junior
Ποια είναι η διαφορά μεταξύ List και Set στη Java;
sobes.tech AI
Απάντηση από AI
Βασικές διαφορές:
- Σειρά στοιχείων:
- Το
Listδιατηρεί τη σειρά με την οποία προστίθενται τα στοιχεία. - Το
Setδεν εγγυάται τη σειρά των στοιχείων (εξαρτάται από την υλοποίηση, π.χ., τοLinkedHashSetδιατηρεί τη σειρά εισαγωγής).
- Το
- Διπλότυπα:
- Το
Listεπιτρέπει την αποθήκευση διπλότυπων στοιχείων. - Το
Setαποθηκεύει μόνο μοναδικά στοιχεία.
- Το
- Πρόσβαση σε στοιχεία:
- Το
Listεπιτρέπει την πρόσβαση σε στοιχεία μέσω δείκτη. - Το
Setδεν παρέχει άμεση πρόσβαση σε στοιχεία μέσω δείκτη, η πρόσβαση γίνεται μέσω επ iterator ή βρόχου.
- Το
- Απόδοση:
- Οι λειτουργίες αναζήτησης και προσθήκης σε
Listμε πολλά στοιχεία μπορεί να είναι πιο αργές από τοSet(π.χ., στοHashSet). - Οι λειτουργίες προσθήκης και διαγραφής στο
Set(π.χ.,HashSet) έχουν συνήθως μέση σταθερή πολυπλοκότητα χρόνου.
- Οι λειτουργίες αναζήτησης και προσθήκης σε
Παράδειγμα:
// Λίστα που επιτρέπει διπλότυπα και διατηρεί τη σειρά
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Έξοδος: [Apple, Banana, Apple]
// Σύνολο που αποθηκεύει μόνο μοναδικά στοιχεία
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Έξοδος: [Apple, Banana] (η σειρά μπορεί να διαφέρει)
Πίνακας σύγκρισης:
| Πτυχή | List |
Set |
|---|---|---|
| Σειρά | Διατηρείται | Δεν εγγυάται (εξαρτάται από την υλοποίηση) |
| Διπλότυπα | Επιτρέπονται | Δεν επιτρέπονται |
| Πρόσβαση με δείκτη | Ναι | Όχι |
| Διεπαφή | java.util.List |
java.util.Set |
| Χρήση | Ταξινομημένες συλλογές, λίστες | Μοναδικές συλλογές, σύνολα |