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