Чтение онлайн

на главную - закладки

Жанры

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

Console.WriteLine("\n");

Console.WriteLine("Добавить еще 20 элементов");

// Добавить количество элементов, достаточное для // принудительного расширения массива, for (int i=0; i < 20; i++) al.Add((char)('a' + i));

Console.WriteLine("Текущая емкость: " + al.Capacity);

Console.WriteLine("Количество элементов после добавления 20 новых: " + al.Count);

Console.Write("Содержимое: "); foreach(char с in al)

Console.Write(с + " ");

Console.WriteLine("\n");

//

Изменить содержимое динамического массива,

// используя индексирование массива.

Console.WriteLine("Изменить три первых элемента"); al [0] = 1X1 ; al[1] = 'Y'; al[2] = 'Z';

Console.Write("Содержимое: "); foreach(char с in al)

Console.Write (c + " ");

Console.WriteLine ;

Вот к какому результату приводит выполнение этой программы.

Исходное количество элементов: О

Добавить 6 элементов Количество элементов: 6 Текущее содержимое: С А Е В D F

Удалить 2 элемента Количество элементов: 4 Содержимое: С Е В D

Добавить еще 20 элементов Текущая емкость: 32

Количество элементов после добавления 20 новых: 24 Содержимое: CEBDabcdefghij klmnopqrst

Изменить три первых элемента

Содержимое: XYZDabcdefghij klmnopqrst

Сортировка и поиск в коллекции типа ArrayList

Коллекцию типа 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 ("\n");

// Отсортировать динамический массив, al.Sort;

// Отобразить содержимое динамического массива, используя цикл foreach.

Console..Write ("Содержимое после сортировки: ") ; foreach (int i in al)

Console.Write (i + " ");

Console.WriteLine ("\n");

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;

int[] ia = (int[]) al.ToArray(typeof(int)); int sum = 0;

// Просуммировать элементы массива, for(int i=0; icia.Length; i++) sum += ia[i];

Console.WriteLine("Сумма равна: " + sum);

}

}

Эта программа дает следующий результат.

Содержимое: 1 2 3 4 Сумма равна: 10

В начале этой программы создается коллекция целых чисел. Затем в ней вызывается метод ToArray с указанием типа int получаемого массива. В итоге создается целочисленный массив. Но поскольку Array является типом, возвращаемым методом ToArray , то содержимое получаемого в итоге массива должно быть приведено к типу int [ ]. (Напомним, что Array является базовым типом для всех массивов в С#.) И наконец, значения всех элементов массива суммируются.

Поделиться:
Популярные книги

Товарищ "Чума" 2

lanpirot
2. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 2

Дело Чести

Щукин Иван
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести

Кодекс Крови. Книга I

Борзых М.
1. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга I

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Час Презрения

Сапковский Анджей
4. Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Час Презрения

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Эволюционер из трущоб. Том 4

Панарин Антон
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 4

Хозяйка собственного поместья

Шнейдер Наталья
1. Хозяйка
Фантастика:
фэнтези
5.00
рейтинг книги
Хозяйка собственного поместья

Запределье

Михайлов Дем Алексеевич
6. Мир Вальдиры
Фантастика:
фэнтези
рпг
9.06
рейтинг книги
Запределье

Идеальный мир для Лекаря 3

Сапфир Олег
3. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 3

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Пятьдесят оттенков серого

Джеймс Эрика Леонард
1. Пятьдесят оттенков
Проза:
современная проза
8.28
рейтинг книги
Пятьдесят оттенков серого

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4