Sobes.tech
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> Ζεύγη κλειδιού-τιμής για γρήγορη αναζήτηση Όχι Ναι Ναι Όχι