Коллекции
16.1. Классификация коллекций. Коллекции общего назначения: стек. очередь, динамический массив, хеш-таблица
Коллекции
В С# под коллекцией понимается некоторая группа объектов. Коллекции упрощают реализацию многих задач программирования, предлагая уже готовые решения для построения структур данных. Все коллекции разработаны на основе четко определенных интерфейсов, поэтому стандартизируют способ обработки группы объектов. Среда .NET Framework поддерживает три основных типа коллекций: общего назначения, специализированные и ориентированные на побитовую организацию данных.
Коллекции общего назначения определены в пространстве имен System.Collection и реализуют такие структуры данных, как стеки, очереди, динамические массивы, словари (хеш-таблицы, предназначенные для хранения пар ключ/значение), отсортированный список для хранения пар ключ/значение. Коллекции общего назначения работают с данными типа object, поэтому их можно использовать для хранения данных любого типа.
Коллекции специального назначения определены в пространстве имен System.Collection.Specialized и ориентированы на обработку данных конкретного типа или на обработку данных уникальным способом. Например, существуют специализированные коллекции, предназначенные только для обработки строк.
В пространстве имен System.Collection определена единственная коллекция, ориентированная на побитовую организацию данных, которая служит для хранения групп битов и поддерживает такой набор операций, который не характерен для коллекций других типов.
В данном разделе мы рассмотрим коллекции общего назначения.
Коллекции общего назначения
Классы коллекций общего назначения:
Рассмотрим данные коллекции более подробно.
Класс Stack
АТД стек - это частный случай однонаправленного списка, добавление элементов в который и выборка элементов из которого выполняются с одного конца, называемого вершиной стека (головой - head ). При выборке элемент исключается из стека. Другие операции со стеком не определены. Говорят, что стек реализует принцип обслуживания LIFO (last in - fist out, последним пришел - первым вышел). Стек проще всего представить себе в виде пирамиды, на которую надевают кольца.
Достать первое кольцо можно только после того, как будут сняты все верхние кольца.
В С# реализацию АТД стек представляет класс Stack, который реализует интерфейсы ICollection, IEnumerable и ICloneable. Stack - это динамическая коллекция, размер которой изменяется.
В классе Stack определены следующие конструкторы:
public Stack(); //создает пустой стек, начальная вместимость которого равна 10 public Stack(int capacity); // создает пустой стек, начальная вместимость которого равна capacity public Stack(ICollection c); //создает стек, который содержит элементы коллекции, заданной //параметром с, и аналогичной (аналогичной - с чем?) вместимостью
Кроме методов, определенных в интерфейсах, реализуемых классом Stack, в этом классе определены собственные методы: