Junior
Τι είναι το HashSet σε C#;
sobes.tech AI
Απάντηση από AI
HashSet<T> είναι μια μη ταξινομημένη συλλογή μοναδικών στοιχείων. Βασίζεται σε έναν πίνακα κατακερματισμού και παρέχει γρήγορες λειτουργίες προσθήκης, διαγραφής και ελέγχου ύπαρξης στοιχείων (μέσος χρόνος σε σταθερή, O(1)).
Βασικά χαρακτηριστικά του HashSet<T>:
- Μοναδικότητα: Δεν μπορεί να περιέχει διπλότυπα. Προσπάθεια προσθήκης υπάρχοντος στοιχείου αγνοείται.
- Μη ταξινομημένο: Τα στοιχεία δεν αποθηκεύονται σε συγκεκριμένη σειρά. Η σειρά επανάληψης μπορεί να διαφέρει από τη σειρά προσθήκης.
- Απόδοση: Χάρη στη χρήση κατακερματισμού, οι λειτουργίες αναζήτησης, προσθήκης και διαγραφής έχουν μέση πολυπλοκότητα O(1). Στην χειρότερη περίπτωση (κακή λειτουργία κατακερματισμού ή συγκρούσεις), η απόδοση μπορεί να μειωθεί.
- Πολλαπλές λειτουργίες: Υποστηρίζει διάφορες λειτουργίες όπως ένωση (
UnionWith), τομή (IntersectWith), διαφορά (ExceptWith), έλεγχο υποσυνόλου ή υπερσυνόλου (IsSubsetOf,IsSupersetOf).
Παράδειγμα χρήσης:
// Δημιουργία HashSet
HashSet<string> fruits = new HashSet<string>();
// Προσθήκη στοιχείων
fruits.Add("μήλο");
fruits.Add("μπανάνα");
fruits.Add("πορτοκάλι");
fruits.Add("μήλο"); // Θα αγνοηθεί, καθώς το "μήλο" ήδη υπάρχει
// Έλεγχος ύπαρξης στοιχείου
bool hasBanana = fruits.Contains("μπανάνα"); // true
bool hasGrape = fruits.Contains("σταφύλι"); // false
// Διαγραφή στοιχείου
fruits.Remove("πορτοκάλι");
// Επανάληψη στοιχείων
foreach (string fruit in fruits)
{
// Έξοδος: μήλο, μπανάνα (η σειρά μπορεί να διαφέρει)
Console.WriteLine(fruit);
}
// Μέγεθος συλλογής
int count = fruits.Count; // 2
Το HashSet<T> υλοποιεί τις διεπαφές ICollection<T>, IEnumerable<T> και ISet<T>, επιτρέποντάς του να χρησιμοποιείται σε διάφορα σενάρια συλλογών και να εκτελεί ειδικές λειτουργίες συνόλων.