Junior
Τι είναι ένα λεξικό (Dictionary) σε C#;
sobes.tech AI
Απάντηση από AI
Ο λεξικό (Dictionary) στη C# είναι μια συλλογή που αποθηκεύει ζεύγη "κλειδί-τιμή", όπου κάθε κλειδί είναι μοναδικό και χρησιμοποιείται για γρήγορη πρόσβαση στην αντίστοιχη τιμή. Υλοποιεί τις διεπαφές IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Βασίζεται σε έναν πίνακα κατακερματισμού.
Βασικά χαρακτηριστικά:
- Μη ταξινομημένο: Η σειρά των στοιχείων στο λεξικό δεν εγγυάται και μπορεί να αλλάξει κατά την προσθήκη/διαγραφή.
- Απόδοση: Οι λειτουργίες προσθήκης, διαγραφής και αναζήτησης με κλειδί έχουν μέση πολυπλοκότητα O(1) (στο ιδανικό, χωρίς συγκρούσεις κατακερματισμού) και O(n) στη χειρότερη περίπτωση.
- Μοναδικότητα κλειδιών: Κάθε κλειδί πρέπει να είναι μοναδικό στο λεξικό. Η προσπάθεια προσθήκης στοιχείου με υπάρχον κλειδί θα οδηγήσει σε εξαίρεση.
Παράδειγμα χρήσης:
// Δημιουργία λεξικού
Dictionary<string, int> μαθητές = new Dictionary<string, int>();
// Προσθήκη στοιχείων
μαθητές.Add("Ivanov", 5);
μαθητές["Petrov"] = 4; // Εναλλακτικός τρόπος προσθήκης/ενημέρωσης
// Έλεγχος αν υπάρχει το κλειδί
if (μαθητές.ContainsKey("Ivanov"))
{
// Λήψη τιμής με κλειδί
int βαθμός = μαθητές["Ivanov"]; // βαθμός == 5
}
// Επανάληψη στοιχείων
foreach (KeyValuePair<string, int> μαθητής in μαθητές)
{
// μαθητής.Key - κλειδί, μαθητής.Value - τιμή
Console.WriteLine($"{μαθητής.Key}: {μαθητής.Value}");
}
// Διαγραφή στοιχείου
μαθητές.Remove("Petrov");
Σύγκριση με άλλες συλλογές:
| Συλλογή | Κύριος σκοπός | Πρόσβαση με δείκτη | Πρόσβαση με κλειδί | Μοναδικότητα κλειδιών | Ταξινόμηση |
|---|---|---|---|---|---|
| List<T> | Ακολουθία στοιχείων | Ναι | Όχι | Όχι | Ναι |
| HashSet<T> | Μοναδικό σύνολο στοιχείων | Όχι | Όχι | Ναι | Όχι |
| Dictionary<TKey, TValue> | Ζεύγη κλειδιού-τιμής για γρήγορη αναζήτηση | Όχι | Ναι | Ναι | Όχι |