Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Коллекции ( наборы ) | Пространство имен: System.Collections

   Коллекции ( наборы )

Коллекции так же называют наборами. Наборы являются этаким дополнением массивов. Они предназначены для группировки объектов, а так же для обработки и управления этими объектами. Давайте же познакомимся с типами и интерфейсами, которые используют коллекции.

Можно выделить два вида коллекций( наборов ) - те, которые хранят объекты типа Object, и обобщенные наборы, в которых при добавлении элемента указывается его тип. Соответственно, более предпочтительными являются коллекции второго типа, так как поддерживают безопасность типов. Но это не означает, что вам не могут потребоваться наборы первого типа. Иногда вам нужно хранить данные различного типа.

Классы для хранения данных типа Object хранятся в пространстве имен: System.Collections. Обобщенные классы хранятся в System.Collections.Genereic. Ну и для хранения данных одного вида используется пространство имен System.Collections.Specialized.

Так же существуют и другие способы деления коллекций ( наборов ) - на словари, списки, коллекции.

   Основные интерфейсы коллекций ( наборов )

  1. IEnumerable
  2. этот интерфейс служит для того, что бы в коллекциях ( наборах ) можно было организовать цикл foreach

  3. ICollection
  4. служит для добавления и удаления элементов

  5. IList
  6. унаследован от ICollection. С помощью этого интерфейса можно удалять, вставлять, обращаться к элементам набора с помощью индекса.

  7. IDictionary
  8. служит для создания словарей, которые хранят ключ и значение

  9. IComparer
  10. используется для сортировки наших коллекций ( наборов )

   Списки

Основными представителями списков являются классы: ArrayList, List<T>. Давайте на примере посмотрим возможности этих списков:

  1. инициализация
  2. ArrayList ob = new ArrayList();
    List<int> it = new List<int>();

    Разница между этими двумя классами заключается в том, что один хранит в наборе элементы определенного типа, а другой - типа Object. Если мы заранее знаем количество элементов в коллекции, то можно сразу при инициализации в конструктор передать это число.

  3. добавление
  4. ob.Add("строка");
    ob.Add(56);
    it.Add(12);
    it.Add(76);

    для добавления сразу множества элементов существует метод AddRange

  5. доступ к элементам
  6. for (int i=0; i<ob.Count;i++){
       Console.WriteLine(ob[i]);
    }

    foreach (int o in it){
       Console.WriteLine(o);
    }

    при выводе всех элементов подряд можно пользоваться любым из циклов, но советую именно цикл foreach из соображений удобности.

  7. вставка и удаление элементов
  8. ob.Insert(2, 'd');
    it.RemoveAt(1);

    если при вставке элемента вы указали несуществующий индекс, то стартанет исключение.

  9. сортировка
  10. ob.Sort();

    если вы храните в списке данные пользовательского типа, то для сортировки вам нужно будет, что б ваш тип унаследовал интерфейс IComparable и переопределил функцию Comparer, так как ему угодно.

Рекомендации к прочтению:

  1. Изолированное хранилище
  2. Типы данных в C#
При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru