Коллекции
Коллекция — это тип, который содержит набор значений одного или различных типов и позволяет обращаться к этим значением. Можно выделить две группы коллекций по способу хранения данных: списки значений и словари (наборы пар «ключ-значение»).
Базовые типы
В основе всей иерархии типов, предназначенных для работы с коллекциями, лежит тип Обходимое<ТипЭлемента>.
Следующими в иерархии расположены типы ЧитаемаяКоллекция<ТипЭлемента> и ЧитаемоеСоответствие<ТипКлюча,ТипЗначения>. Эти типы реализуют базовый контракт, необходимый для работы со списком экземпляров и со словарем.
Фиксированные и обычные коллекции
Типы, которые реализуют механизмы работы с коллекциями, можно разделить на две части:
- типы, которые не предоставляют возможность изменять свой состав (фиксированные коллекции);
- типы, которые предоставляют возможность изменить свой состав (обычные коллекции).
Типы для работы с коллекциями
- Массив<ТипЭлемента> — список элементов, без контроля уникальности. Поддерживается доступ по индексу;
- Множество<ТипЭлемента> — список уникальных элементов. Не поддерживается доступ по индексу;
- Соответствие<ТипКлюча,ТипЗначения> — словарь, список пар «ключ-значение». В коллекции поддерживается уникальность по ключу. Поддерживается доступ по индексу.
Методы последовательной обработки коллекций
При выполнении операций над коллекциями вместо циклов и условных операторов для обработки данных можно использовать последовательный вызов цепочки методов. Это позволит ускорить и упростить написание кода.Методы делятся на последовательные и терминальные. К последовательным методам относятся те, которые могут применяться к потоку данных несколько раз без его завершения. Они не меняют элементы последовательности или возвращают новую последовательность с результатами. Например, Преобразовать(), Фильтровать(), Сортировать(), ДляКаждого(). К терминальным методам относятся методы, которые применяются к потоку только один раз и возвращают результат. Это такие методы, как ВМассив(), НетСоответствий(), ПосчитатьРазмер().
В результате вызова цепочки последовательных методов неявно создаются элементы типа Последовательность<ТипЭлемента>, то есть никаких реальных действий не выполняется, пока не будет вызван последний, терминальный, метод в цепочке.