Добавить в цитаты Настройки чтения

Страница 464 из 502

<b>      Console.Write(ch + &quot; &quot;);</b>

<b>    Console.WriteLine(&quot;n&quot;);</b>

<b>    // Отобразить связный список, обойдя его</b>

<b>    // вручную в обратном направлении.</b>

<b>    Console.Write(&quot;Следовать по ссылкам в обратном направлении: &quot;);</b>

<b>    for(node = ll.Last; node != null; node = node.Previous)</b>

<b>      Console.Write(node.Value + &quot; &quot;);</b>

<b>    Console.WriteLine (&quot;n&quot;);</b>

<b>    // Удалить из списка два элемента.</b>

<b>    Console.WriteLine(&quot;Удалить 2 элемента из списка&quot;);</b>

<b>    // Удалить элементы из связного списка.</b>

<b>    ll.Remove('С');</b>

<b>    ll.Remove('А');</b>

<b>    Console.WriteLine(&quot;Количество элементов в списке: &quot; + ll.Count);</b>

<b>    // Отобразить содержимое видоизмененного списка в цикле foreach.</b>

<b>    Console.Write(&quot;Содержимое списка после удаления элементов: &quot;);</b>

<b>    foreach(char ch in ll)</b>

<b>      Console.Write(ch + &quot; &quot;);</b>

<b>    Console.WriteLine (&quot;n&quot;);</b>

<b>    // Добавить три элемента в конец списка.</b>

<b>    ll.AddLast('X');</b>

<b>    ll.AddLast('Y');</b>

<b>    ll.AddLast('Z');</b>

<b>    Console.Write(&quot;Содержимое списка после ввода элементов: &quot;);</b>

<b>    foreach(char ch in ll)</b>

<b>      Console.Write(ch + &quot; &quot;);</b>

<b>    Console.WriteLine(&quot;n&quot;);</b>

<b>  }</b>

<b>}</b>

Ниже приведен результат выполнения этой программы.

<b>Исходное количество элементов в списке: 0</b>

<b>Добавить в список 5 элементов</b>

<b>Количество элементов в списке: 5</b>

<b>Отобразить содержимое списка по ссылкам: Е D С В А</b>

<b>Отобразить содержимое списка в цикле foreach: Е D С В А</b>

<b>Следовать по ссылкам в обратном направлении: А В С D Е</b>

<b>Удалить 2 элемента из списка</b>

<b>Количество элементов в списке: 3</b>

<b>Содержимое списка после удаления элементов: Е D В</b>

<b>Содержимое списка после ввода элементов: Е D В X Y Z</b>

Самое примечательное в этой программе — это обход списка в прямом и обратном направлении, следуя по ссылкам, предоставляемым свойствами Next и Previous. Двунаправленный характер подобных связных списков имеет особое значение для приложений, управляющих базами данных, где нередко требуется перемещаться по списку в обоих направлениях.

Класс Dictionary&lt;TKey, TValue&gt; позволяет хранить пары "ключ-значение" в коллекции как в словаре. Значения доступны в словаре по соответствующим ключам. В этом отношении данный класс аналогичен необобщенному классу Hashtable. В классе Dictionary&lt;TKey, TValue&gt; реализуются интерфейсы IDictionary, IDictionary&lt;TKey, TValue&gt;, ICollection, ICollection&lt;KeyValuePair&lt;TKey, TValue&gt;&gt;, IEnumerable, IEnumerable&lt;KeyValuePair&lt;TKey, TValue&gt;&gt;, ISerializable и IDeserializationCallback. В двух последних интерфейсах поддерживается сериализация списка. Словари имеют динамический характер, расширяясь по мере необходимости.

В классе Dictionary&lt;TKey, TValue&gt; предоставляется немало конструкторов. Ниже перечислены наиболее часто используемые из них.

<b>public Dictionary()</b>

<b>public Dictionary(IDictionaryCTKey, TValue&gt; <i>dictionary)</i></b>

<b>public Dictionary(int <i>capacity)</i></b>

В первом конструкторе создается пустой словарь с выбираемой по умолчанию первоначальной емкостью. Во втором конструкторе создается словарь с указанным количеством элементов dictionary. А в третьем конструкторе с помощью параметра capaci ty указывается емкость коллекции, создаваемой в виде словаря. Если размер словаря заранее известен, то, указав емкость создаваемой коллекции, можно исключить изменение размера словаря во время выполнения, что, как правило, требует дополнительных затрат вычислительных ресурсов.

В классе Dictionary<TKey, TValue> определяется также ряд методов. Некоторые наиболее часто используемые методы этого класса сведены в табл. 25.17.

Таблица 25.17. Наиболее часто используемые методы, определенные в классе Die tionaryCTKey, TValue>

Метод - Описание

public void Add(TKey key, TValue value) - Добавляет в словарь пару “ключ-значение", определяемую параметрами key и value. Если ключ key уже находится в словаре, то его значение не изменяется, и генерируется исключение ArgumentException