Классы коллекций в .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 (полный список приведен в электронной документации).