Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ List και Set στη Java;

sobes.tech AI

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

Βασικές διαφορές:

  1. Σειρά στοιχείων:
    • Το List διατηρεί τη σειρά με την οποία προστίθενται τα στοιχεία.
    • Το Set δεν εγγυάται τη σειρά των στοιχείων (εξαρτάται από την υλοποίηση, π.χ., το LinkedHashSet διατηρεί τη σειρά εισαγωγής).
  2. Διπλότυπα:
    • Το List επιτρέπει την αποθήκευση διπλότυπων στοιχείων.
    • Το Set αποθηκεύει μόνο μοναδικά στοιχεία.
  3. Πρόσβαση σε στοιχεία:
    • Το List επιτρέπει την πρόσβαση σε στοιχεία μέσω δείκτη.
    • Το Set δεν παρέχει άμεση πρόσβαση σε στοιχεία μέσω δείκτη, η πρόσβαση γίνεται μέσω επ iterator ή βρόχου.
  4. Απόδοση:
    • Οι λειτουργίες αναζήτησης και προσθήκης σε 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
Χρήση Ταξινομημένες συλλογές, λίστες Μοναδικές συλλογές, σύνολα