Коллекции. Пример класса ArrayList (Список массивов).
Библиотека классов NET Framework предлагает широкий выбор классов для работы с коллекциями объектов. Все эти классы находятся в пространстве имен System::Collections (Система::Коллекции) и реализуют ряд различного типа коллекций, в том числе списки, очереди, массивы, стеки и хэш-таблицы В коллекциях содержатся экземпляры класса Object (Объект). Так как все управляемые типы происходят исключительно от Object (Объект), в коллекции может храниться экземпляр любого встроенного или определяемого пользователем типа.
В этом разделе мы рассмотрим типичный представитель данного пространства имен – класс ArrayList (Список массивов), и научимся на практике использовать списки массивов. В частности, мы используем их для подходящей реализации нашего класса, экземпляры которого предполагается хранить в коллекции. Мы увидим, что метод Equals (Равняется) нашего класса должен быть подменен, так как реализация любого из классов коллекций требует реализации метода Equals (Равняется).
Пример класса ArrayList (Список массивов)
Для начала приведем простой пример использования класса ArrayList (Список массивов). Как понятно из названия (Array List – Список массивов), ArrayList – это список объектов, хранимый подобно массиву. Размер списка массивов может динамически изменяться, и может расти при добавлении новых элементов.
Классы коллекций содержат экземпляры класса Оbject (Объект). Мы создадим и будем иметь дело с коллекцией объектов Customer (Клиент). Использовать любой другой встроенный или определяемый пользователем управляемый тип ничуть не сложнее. При использовании простого типа, такого, как int, экземпляр данного типа для сохранения в коллекции должен быть упакован (boxed), а перед его использованием – распакован обратно в int.
Взятая для примера программа называется CustomerCollection В ней инициализируется список клиентов, после чего пользователь может просмотреть данный список, зарегистрировать нового клиента, отменить регистрацию клиента или изменить адрес его электронной почты. Вызов простого метода help (помощь) отображает список доступных команд.
Enter command, quit to exit H> help The following commands are available: register register a customer unregister unregister a customer email change email address show show customers quit exit the program
Вот перевод:
Введите команду, quit для выхода из программы Н> help Доступны следующие команды: register (регистрировать) регистрирует клиента unregister (отменить регистрацию) отменяет регистрацию клиента email (электронная почта) изменяет адрес электронной почты show (показать) показывает клиентов quit выход из программы
До того, как ознакомиться с исходным кодом, было бы неплохо запустить программу, зарегистрировать нового клиента, просмотреть список клиентов, изменить адрес электронной почты клиента, отменить регистрацию клиента и снова просмотреть список клиентов. Приведем пример выдачи программы:
Н> show // показать id (-1 for all): -1 // идентификатор (-1 для всех):-1 1 Rocket Squirrel rocky@frosbitefalls.com 2 Bullwinkle Moose moose@wossamotta.edu H> register // регистрировать first name: Bob // имя: Боб last name: Oberg // фамилия: Оберг email address: oberg@objectinnovations.com // адрес электронной // почты: id = 3 // идентификатор = 3 H> email // электронная почта customer id: 1 // идентификатор клиента email address: rocky@objectinnovations.com // адрес электронной // почты Н> unregister id: 2 // идентификатор: 2 Н> show // показать id (-1 for all): -1 // идентификатор (-1 для всех) 1 Rocket Squirrel rocky@objectinnovations.com 3 Bob Oberg oberg@objectinnovations.com