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

       

ArrayList


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

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

Рис. 4.6 . Метод GetDirectories в справочной системе

Таблица 4.3. Важнейшие члены класса ArrayList



Имя

Описание

Copy To Копирует объект ArrayList (полностью или частично) в одномерный массив начиная с заданного индекса массива-приемника
Contains Проверяет, присутствует ли в объекте ArrayList заданный элемент
Clear

Удаляет все элементы из объекта ArrayList

Capacity Получает или задает максимальное количество элементов, на которое рассчитан объект ArrayList. Конечно, вместимость массива изменяется по мере добавления новых элементов, но по соображениям эффективности вместимость наращивается большими «порциями»
BinarySearch Выполняет бинарный поиск заданного элемента в отсортированном динамическом массиве или в его части
AddRange

Позволяет добавить содержимое другого массива (динамического или обычного) в текущий динамический массив. В сочетании с методом InsertRange позволяет быстро объединять массивы с использованием Arraylist в качестве вспомогательного класса

Add

Добавляет новый объект в конец динамического массива

Имя

Описание

Count

Возвращает количество элементов, фактически хранящихся в массиве

GetRange

Возвращает другой объект ArrayList, содержащий последовательность смежных элементов текущего объекта

IndexOf

Возвращает индекс первого вхождения заданного элемента в динамический массив. Следует помнить, что индексация в классе ArrayList (как и в обычных массивах) начинается с нуля

Insert

Вставляет элемент в заданную позицию объекта ArrayList

InsertRange

Вставляет элементы коллекции в объект ArrayList начиная с заданной позиции

Item

Получает или задает значение элемента, находящегося в заданной позиции. Является свойством по умолчанию для класса ArrayList

LastlndexOf

Возвращает индекс последнего вхождения заданного элемента в динамический массив (индексация начинается с нуля)

Length

Возвращает количество элементов в динамическом массиве

Readonly

Возвращает новый объект ArrayList, доступный только для чтения (проверка возможности записи в динамический массив осуществляется методом IsReadOnly)

Remove

Удаляет из массива первое вхождение заданного элемента

Re move At

Удаляет элемент, находящийся в заданной позиции

RemoveRange

Удаляет последовательность смежных элементов

RepeatRange

Возвращает объект ArrayList, содержащий заданное количество дубликатов


одного элемента

Reverse

Переставляет элементы в объекте ArrayList в противоположном порядке (во всем массиве или в его части)

SetRange

Копирует элементы коллекции поверх интервала элементов ArrayList

Sort

Сортирует элементы в объекте ArrayList (во всем массиве или в его части)

ToArray

Копирует элементы из объекта ArrayList в массив

TrimToSize

Используется после завершения операций с объектом ArrayList; вместимость динамического массива уменьшается до фактического количества элементов, хранящихся в нем в настоящий момент (разумеется, позднее массив снова может увеличиться)

<
Среди свойств класса ArrayList наибольший интерес представляет свойство Item, которое представляет элемент с заданным индексом. Пример:

Consolе.WriteLinediiyList.Item( 1))

Свойство Item является свойством по умолчанию класса ArrayList. Это означает, что при использовании его имя может не указываться, Например, приведенная выше команда эквивалентна следующей команде:

Console. WriteLine(myList(1))

В разделе «Свойства» настоящей главы вы узнаете, чем отличаются свойства по умолчанию в VB .NET и прежних версиях VB.

В следующем коротком примере массив ArrayLi st используется для ввода и сохранения неизвестного количества строк. При этом удается обойтись без команды ReDim Preserve, необходимой при работе с обычными массивами.

Option Strict On Module Modulel

Sub Main()

Dim myList As New ArrayList()

Dim theData As String

Console.Write("Please enter each item and hit Enter key,"_

& "enter ZZZ when done:") theData =Console.ReadLine()

Do Until theData ="ZZZ" myList.Add(theData)

Console.WriteC'Please enter each item and hit Enter,"_

& "enter ZZZ when done:") theData =Console.ReadLine() Loop

Console.WriteLine("You entered "SmyList.Count() & "ITEMS.")

Console.ReadLine()

End Sub

End Module


Содержание раздела