Добавил:
выбрасываю тут свой мусор, надеюсь, что он кому-то может пригодится... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP-KONEChNYJ.docx
Скачиваний:
20
Добавлен:
03.12.2023
Размер:
7.72 Mб
Скачать

12. Списки, очереди, стеки, словари, их применение и сравнение с массивами. Интерфейс iEnumerable и его назначение

Списки

List<T> представляет простейший список однотипных объектов. Является динамическим массивом (аналог std::vector в C++). Динамический массив переменной длины, который состоит из ссылок на объекты и может динамически увеличивать и уменьшать свой размер. Создается с первоначальным размером. Если этот размер превышается, то массив автоматически расширяется. А при удалении объектов из такого массива он автоматически сокращается.

Среди его методов можно выделить следующие: Add,AddRange,Insert,Remove и др.

ArrayList - похож на List<T> , но можно сохранять разнотипные объекты. Но медленее.

LinkedList<T> - представляет собой двухсвязный список, в котором каждый элемент ссылается на следующий и предыдущий.

В отличие от массива данные хранятся в разных участках памяти, как следствие:

  • Операция добавления/удаления более дешевая и не требует перераспределения памяти.

  • Однако доступ к произвольному элементу дороже.

Очередь

Queue<T> - это коллекция, в которой элементы обрабатываются по схеме "первый вошел, первый вышел" (first in, first out — FIFO). Элемент, вставленный в очередь первым, первым же и читается.

можно отметить следующие методы:

• Dequeue: извлекает и возвращает первый элемент очереди

• Enqueue: добавляет элемент в конец очереди

• Peek: просто возвращает первый элемент из начала очереди без его удаления

Стек

Stack<T> представляет коллекцию, которая использует алгоритм LIFO ("последний вошел - первый вышел"). При такой организации каждый следующий добавленный элемент помещается поверх предыдущего. Извлечение из коллекции происходит в обратном порядке - извлекается тот элемент, который находится выше всех в стеке.

В классе Stack можно выделить два основных метода, которые позволяют управлять элементами:

  • Push: добавляет элемент в стек на первое место

  • Pop: извлекает и возвращает первый элемент из стека

  • Peek: просто возвращает первый элемент из стека без его удаления Словари.

Словарь

Dictionary<TKey,TValue> - список пар ключ значение. Главное свойство словарей — быстрый поиск на основе ключей. Можно также свободно добавлять и удалять элементы, подобно тому, как это делается в List<T>, но без накладных расходов производительности, связанных с необходимостью смещения последующих элементов в памяти.При помощи foreach можем получить и ключ и значение.

Методы: Add, Remove и др.

Интерфейс IENumerable

Используется для возможности использования экземпляров класса при обходе foreach.

Должен реализовать методы:

bool MoveNext(); // переход на следующий элемент коллекции

void Reset(); // переход на начало коллекции.

Свойство:

object Current {get;} // возвращает значение текущего элемента коллекции

Коллекции обычно не реализуют перечислители, а предоставляют их через интерфейс IEnumerable. Содержит один метод: IEnumerator GetEnumerator();

За счет определения единственного метода, возвращающего перечислитель, интерфейс IEnumerable обеспечивает гибкость в том, что логика итерации может быть предоставлена другому классу. Это также дает возможность нескольким потребителям выполнять перечисление последовательности одновременно, не влияя друг на друга.

Соседние файлы в предмете Объектно-ориентированное программирование