Array List Dictionary HashSet Stack Queue SortedList LinkedList <br> <br> Что общего между коллекциями - Все элементы внутри коллекции одного типа - Key/index уникальный - Поиск по value (значению) производится перебором каждого элемента в коллекции. - Если в качестве value или key выступает ссылочный тип и нам нужно найти какой-то определенный элемент в списке, то при поиске сравнение будет происходить по адресу в памяти (по ссылке) ### Array (Массив) - Фиксированная длина (Длину нельзя изменить, только создать массив с бОльшей длиной и перенести туда элементы) - В качестве индекса используется тип int ![Разница между Collections (Коллекции)](images/Разница%20между%20Collections%20(Коллекции).png) ### List (Список) - То же самое, что и Array, только динамическая длина. Можно указать длину списка, но если вместимости не хватит, то автоматически будет добавлено еще необходимое количество. - При переборе списка с помощью foreach, внутри цикла коллекцию нельзя модифицировать. Цикла for это не касается. Решением будет создание копии списка (дописать к списку .ToList() и будет возвращена копия) ### Dictionary (Словарь) - В качестве key может использоваться любой тип Если в качестве key будет использоваться НЕ базовый тип, то для корректного поиска по key нужно переопределить два метода GetHashCode() и Equals(). Если этого не сделать, то по умолчанию два ссылочных типа сравниваются между собой по адресу в памяти (ссылке). Тем самым сравнение по значению НЕ будет работать. Key должен быть уникальным. Если в Dictionary попадает второй одинаковый key, генерируется исключение. Поиск по key происходит следующим образом. Сначала ищется совпадение по hash Если совпадений несколько, то найденные экземпляры перебираются по Equals(); Если по Equals() несколько совпадений, то вызывается исключение. ### HashSet То же самое, что и Dictionary, только без значения (value), есть только (key). Полезен, если нужно часто проверять наличие элементов в большом списке. [Источник](https://highload.today/hashset/) ### LinkedList Отличия от обычного List - Нет ключа. Нельзя обратиться напрямую к элементу (нет индексатора), только перебором всей коллекции. - Быстрое удаление элемента (главное преимущество) ### Другие виды коллекций Для экономии времени отложил расписывание. Когда понадобятся, тогда и распишем.