Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Using System.Collections.Generic;. class GenLinkedListDemo { static void Main() {




class GenLinkedListDemo { static void Main() {

// Создать связный список.

LinkedList<char> 11 = new LinkedList<char>();

Console.WriteLine("Исходное количество элементов в списке: " + 11.Count) Console.WriteLine ();

Console.WriteLine("Добавить в список 5 элементов");

// Добавить элементы в связный список.

11.AddFirst('А');

11.AddFirst('В');

11.AddFirst('С');

11.AddFirst(' D');

11.AddFirst('Е *);

Console.WriteLine("Количество элементов в списке: " + 11.Count);

// Отобразить связный список, обойдя его вручную.

LinkedListNode<char> node;

Console.Write("Отобразить содержимое списка по ссылкам: "); for(node = 11.First; node!= null; node = node.Next)

Console.Write(node.Value + " ");

Console.WriteLine("\n");

// Отобразить связный список, обойдя его в цикле foreach.

Console.Write("Отобразить содержимое списка в цикле foreach: "); foreach(char ch in 11)

Console.Write(ch + " ");

Console.WriteLine("\n");

// Отобразить связный список, обойдя его вручную в обратном направлении. Console.Write("Следовать по ссылкам в обратном направлении: "); for(node = 11.Last; node!= null; node = node.Previous)

Console.Write(node.Value + " ");

Console.WriteLine ("\n");

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

Console.WriteLine("Удалить 2 элемента из списка");

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

11.Remove(1С1);

11.Remove('А');

Console.WriteLine("Количество элементов в списке: " + 11.Count);

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

Console.Write("Содержимое списка после удаления элементов: "); foreach(char ch in 11)

Console.Write(ch + " ");

Console.WriteLine ("\n");

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

11.AddLast('X');

11.AddLast('Y');

11.AddLast('Z');

Console.Write("Содержимое списка после ввода элементов: "); foreach(char ch in 11)

Console.Write(ch + " ");

Console.WriteLine("\n");

}

}

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

. Исходное количество элементов в списке: О

Добавить в список 5 элементов Количество элементов в списке: 5

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

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

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

Удалить 2 элемента из списка Количество элементов в списке: 3

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

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

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

 

Класс DictionaryCTKey, TValue>

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

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

Public Dictionary()

public Dictionary(IDictionaryCTKey, TValue> dictionary) public Dictionary(int capacity)

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

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

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

 

Метод

 

Описание

 

Public

value)

 

void Add(TKey key, TValue

 

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

 

Public

key)

 

Bool

 

ContainsKey(TKey

 

Возвращает логическое значение true, если вызывающий словарь содержит объект key в качестве ключа; а иначе — логическое значение false

 

Public

value)

 

Bool

 

ContainsValue(TValue

 

Возвращает логическое значение true, если вызывающий словарь содержит значение value; в противном случае — логическое значение false

 

Public

 

Bool

 

Remove(TKey key)

 

Удаляет ключ key из словаря. При удачном исходе операции возвращается логическое значение true, а если ключ key отсутствует в словаре — логическое значение false

 

Кроме того, в классе Dictionary<TKey, TValue> определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.

 

Свойство

 

Описание

 

public IEqualityComparer<TKey> Comparer { get; } public Dictionary<TKey, TValue>. KeyCollection Keys { get; } public Dictionary<TKey, TValue>. ValueCollection Values { get; }

 

Получает метод сравнения для вызывающего словаря

Получает коллекцию ключей -Получает коллекцию значений

 

Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойств Keys и Values. В коллекциях типа DictionaryCTKey, TValue>.KeyCollectionи Dictionary<TKey, TValue>. ValueCollection реализуются как обобщенные, так и необобщенные формы интерфейсов ICollection и IEnumerable.

И наконец, в классе DictionaryCTKey, TValue> реализуется приведенный ниже индексатор, определенный в интерфейсе IDictionary<TKey, TValueX

public TValue this[TKey key] { get; set; }

Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в качестве индекса в данном случае служит ключ элемента, а не сам индекс.

При перечислении коллекции типа DictionaryCTKey, TValue> из нее возвращаются пары "ключ-значение7' в форме структуры KeyValuePairCTKey, TValueX Напомним, что в этой структуре определяются два поля.





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 339 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2505 - | 2304 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.