Коллекцию типа ArrayList можно отсортировать с помощью метода Sort (). В этом случае поиск в отсортированной коллекции с помощью метода BinarySearch () становится еще более эффективным. Применение обоих методов демонстрируется в приведенном ниже примере программы.
// Отсортировать коллекцию типа ArrayList и осуществить в ней поиск.
using System;
using System.Collections;
class SortSearchDemo { static void Main() {
// Создать коллекцию в виде динамического массива.
ArrayList al = new ArrayList();
// Добавить элементы в динамический массив.
al.Add(55);
al.Add(43) ;
al.Add(-4);
al.Add(88);
al.Add(3);
al.Add(19) ;
Console.Write('Исходное содержимое: '); foreach(int i in al)
Console.Write (i + ' ');
Console.WriteLine (' ');
// Отсортировать динамический массив, al.Sort();
// Отобразить содержимое динамического массива, используя цикл foreach.
Console..Write ('Содержимое после сортировки: ') ; foreach (int i in al)
Console.Write (i + ' ');
Console.WriteLine (' ');
Console.WriteLine('Индекс элемента 43: ' + al.BinarySearch (43));
}
}
Ниже приведен результат выполнения этой программы.
Исходное содержимое: 55 43 -488 3 19
Содержимое после сортировки: -4 3 19 43 55 88
Индекс элемента 43: 3
В одной и той же коллекции типа ArrayList могут храниться объекты любого типа. Тем не менее во время сортировки и поиска в ней эти объекты приходится сравнивать. Так, если бы список объектов в приведенном выше примере программы содержал символьную строку, то их сравнение привело бы к исключительной ситуации. Впрочем, для сравнения символьных строк и целых чисел можно создать специальные методы. О таких методах сравнения речь пойдет далее в этой главе.
Получение массива из коллекции типа ArrayList
В работе с коллекцией типа ArrayList иногда требуется получить из ее содержимого обычный массив. Этой цели служит метод ТоАггау (). Для преобразования коллекции в массив имеется несколько причин. Две из них таковы: потребность в ускорении обработки при выполнении некоторых операций и необходимость передавать массив методу, который не перегружается, чтобы принять коллекцию. Но независимо от конкретной причины коллекция типа ArrayList преобразуется в обычный^лассив довольно просто, как показано в приведенном ниже примере программы.
// Преобразовать коллекцию типа ArrayList в обычный массив.
using System;
using System.Collections;
class ArrayListToArray { static void Main() {
ArrayList al = new ArrayList();
// Добавить элементы в динамический массив, al.Add(1); al.Add(2); al.Add(3) ; al.Add(4) ;
Console.Write('Содержимое: '); foreach(int i in al)
Console.Write(i + ' ');
Console.WriteLine();
