Иллюстрированный самоучитель по Visual Basic .NET

Классы коллекций в .NET Framework. ArrayList.

Чтобы пробудить в вас интерес к .NET Framework, мы кратко рассмотрим некоторые классы коллекций. В этих классах реализуются стандартные структуры данных, часто используемые в нетривиальных программах. Коллекции настолько важны, что они по умолчанию автоматически импортируются в каждое решение VB.NET (в пространстве имен System.Collections).

В совокупности эти классы оставляют далеко позади примитивный класс Collection из VB6. Самые полезные классы коллекций перечислены в табл. 4.2. В следующих двух разделах рассматриваются основные принципы работы с двумя важнейшими классами: ArrayList и HashTable. Знакомство с очень важным классом DictionaryBase откладывается до следующей главы, посвященной наследованию.

Таблица 4.2. Основные классы коллекций.

Имя класса Описание
ArrayList Динамический массив, размеры которого увеличиваются и уменьшаются по мере надобности
BitArray Используется для поразрядных операций с отдельными битами
Hashtable Коллекция пар "ключ/значение", упорядоченная.,по хэш-кодам ключей
Queue Очередь (принцип FIFO, "первым пришел, первым вышел")
Stack Стек (принцип LIFO, "последним пришел, первым вышел")
DictionaryBase Базовый класс для различных ассоциативных массивов (словарей). В ассоциативном массиве хранятся пары "ключ/значение", и работать с ними удобнее, чем со многими типами коллекций. Класс DictionaryBase используется только путем наследования (см. главу 5)

ArrayList

Класс ArrayList реализует динамический массив, размеры которого автоматически увеличиваются и уменьшаются по мере надобности. Динамические массивы работают чуть медленнее обычных массивов, но они заметно упрощают многие задачи программирования. Кроме того, в отличие от большинства массивов класс ArrayList является гетерогенным, то есть позволяет хранить объекты разных типов. В главе 5 будет показано, как создать класс ArrayList для хранения объектов лишь одного типа; вы также узнаете о некоторых нюансах, связанных с хранением обобщенных объектов в ArrayLiSt.

Использование ArrayList вместо базового массива означает, что вам не придется часто вызывать ReDim Preserve для сохранения существующих данных. Достаточно вызвать метод Add, и класс ArrayList сам выполнит всю черновую работу. Класс ArrayList содержит ряд других полезных методов. Например, метод AddRange позволяет перенести в динамический массив все содержимое существующего массива всего одной командой. После завершения обработки элементы можно скопировать обратно. В частности, это позволяет легко объединить содержимое двух массивов. В табл. 4.3 перечислены основные члены класса ArrayList (полный список приведен в электронной документации).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.