Использование ассоциативного массива

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск

Назначение

АТД Ассоциативный массив Dictionary<K, V> осуществляет отображение из значений типа K в значения типа V. Частным случаем ассоциативного массива является обычный массив элементов типа V: у него в качестве типа K выступают целые числа (тип integer).

Пример

uses System.Collections.Generic; // стандартный модуль

// …

  var m := new Dictionary<string, integer>; // отображение из строк в целые
  m['Крокодил'] := 3;  // указываем значение отображения на элементе 'Крокодил'
  m.Add('Бегемот', 2); // аналогично предыдущему, просто другой синтаксис.
 
  {
   В данной точке программы строка:
      var n := m['Леопард'] + 1;
   вызовет исключение, потому что мы не определяли отображение на элементе 'Леопард'.
   Чтобы этого не случилось, выполним проверку:}
 
  if m.ContainsKey('Леопард') then
    var n := m['Леопард'] + 1;
 
  foreach k: KeyValuePair<string, integer> in m do
    writeln(k.Key, ' ', k.Value); // печатаем значения отображения на всех определённых ранее элементах

Интерфейс

Стандартные классы, реализующие ассоциативный массив,

  • Dictionary<Key, Value>,
  • SortedDictionary<Key, Value>,
  • SortedList<Key, Value>

имеют следующий интерфейс:

 Add(k: Key; v: Value);
 Clear; 
 ContainsKey(k: Key): boolean;
 ContainsValue(v: Value): boolean;
 Remove(k: Key): boolean;
 TryGetValue(k: Key; var v: Value): boolean;
 ToString: string;
 property Count: integer;
 property Item[k: Key]: Value;