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