Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_proge.docx
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
70.06 Кб
Скачать

16.Коллекции: коллекция Hashtable.

Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хеш-таблица. В хеш-таблице для хранения информации используется механизм, именуемый хешированием (hashing). Суть хеширования состоит в том, что для определения уникального значения, которое называется хеш-кодом, используется информационное содержимое соответствующего ему ключа. Хеш-код затем используется в качестве индекса, по которому в таблице отыскиваются данные, соответствующие этому ключу. Но преимущество хеширования - в том, что оно позволяет сокращать время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации.

Класс Hashtable реализует стандартные интерфейсы IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback и ICloneable. Размер хеш-таблицы может динамически изменяться.

В классе Hashtable определено несколько конструкторов:

public Hashtable() //создает пустую хеш-таблицу

// строит хеш-таблицу, которая инициализируется элементами коллекции с

public Hashtable(IDictionary с)

public Hashtable(int capacity) //создает хеш-таблицу с вместимостью capacity

public virtual bool ContainsKey (object k) - Возвращает значение true , если в вызывающей хеш-таблице содержится ключ, заданный параметром k. В противном случае возвращает значение false.

public virtual bool ContainsValue (object v) - Возвращает значение true, если в вызывающей хеш-таблице содержится значение, заданное параметром v. В противном случае возвращает значение false.

В классе Hashtable, помимо свойств, определенных в реализованных им интерфейсах, определены два собственных public-свойства:

public virtual ICollection Keys { get; } //позволяет получить коллекцию ключей

public virtual ICollection Values { get; } //позволяет получить коллекцию значений

Для добавления элемента в хеш-таблицу необходимо вызвать метод Add(), который принимает два отдельных аргумента: ключ и значение.

17. Регулярные выражения, язык описания регулярных выражений.

Регулярные выражения предназначены для обработки текстовой информации и обеспечивают:

  1. Эффективный поиск в тексте по заданному шаблону;

  2. Редактирование текста;

  3. Формирование итоговых отчетов по результатам работы с текстом.

Регулярное выражение - это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол - некоторый класс символов.

Метасимволы:

. - Любой символ, кроме \n. - Выражение c.t соответствует фрагментам: cat, cut, c#t, c{t и т.д.

[] - Любой одиночный символ из последовательности, записанной внутри скобок. Допускается использование диапазонов символов. - Выражение c[aui]t соответствует фрагментам: cat, cut, cit. Выражение c[a-c]t соответствует фрагментам: cat, cbt, cct.

\w - Любой алфавитно-цифровой символ. - Выражение c\wt соответствует фрагментам: cbt, cct, c2t и т.д., но не соответствует фрагментам c%t, c{t и т.д.

Уточняющие метасимволы:

^

Фрагмент, совпадающий с регулярными выражениями, следует искать только в начале строки

$

Фрагмент, совпадающий с регулярными выражениями, следует искать только в конце строки

В регулярных выражениях часто используются повторители - метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений в выражении.

*

Ноль или более повторений предыдущего элемента

Выражение ca*t соответствует фрагментам: ct, cat, caat, caaat и т.д.

+

Одно или более повторений предыдущего элемента

Выражение ca+t соответствует фрагментам: cat, caat, caaat и т.д.

?

Не более одного повторения предыдущего элемента

Выражение ca?t соответствует фрагментам: ct, cat.

Примеры регулярных выражений:

  1. слово rus -

  2. @"rus" или "rus"

  3. номер телефона в формате xxx-xx-xx - @"\d\d\d-\d\d-\d\d" или @"\d{3}(-\d\d){2}"

  4. номер автомобиля - @"[A-Z]\d{3}[A-Z]{2}\d{2,3}RUS"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]