Мы можем использовать любой из них (включая List, ArrayList, Dictionary, Hashtable, Stack, Queue) для хранения значения или ссылки на другие объекты в виде коллекции.
Но, мой вопрос, какой из них используется, когда?
Мы можем использовать любой из них (включая List, ArrayList, Dictionary, Hashtable, Stack, Queue) для хранения значения или ссылки на другие объекты в виде коллекции.
Но, мой вопрос, какой из них используется, когда?
Списки позволяют дублировать элементы, могут быть доступны по индексу и поддерживать линейный обход.
ArrayList. Список на основе массива, который не поддерживает общие типы. Он не обеспечивает безопасность типа и, как правило, следует избегать.
Список. Список массивов, который поддерживает общие типы и обеспечивает безопасность типов. Так как он несмежный, он может увеличиваться по размеру без перераспределения памяти для всего списка. Это наиболее часто используемая коллекция списков.
Хэши - это поисковые запросы, в которых вы даете каждому элементу в списке "ключ", который будет использоваться для его получения позже. Подумайте о хеше, как индекс таблицы, где вы можете задать такие вопросы, как "Я собираюсь найти этот объект по этому строковому значению. Дублировать ключи не разрешены.
HashTable - базовая карта пары ключ-значение, которая работает как индексированный список.
Словарь. Хэш-таблица, которая поддерживает общие типы и обеспечивает безопасность типов.
Очереди контролируют доступ к элементам в списке. Вы обычно нажимаете/поп-записи из очереди в определенном направлении (либо спереди, либо назад). Не используется для случайного доступа посередине.
Stack - список LIFO (последний, первый раз), в котором вы нажимаете/записываете записи друг на друга.
Очередь - список FIFO (первый в первом списке), в котором вы нажимаете записи сверху и выкладываете их снизу.
Список может содержать повторяющиеся объекты
ArrayList предназначен только для совместимости со старыми версиями фреймворка, где IList не существует
Словарь используется для хранения пар ключей/значений. Вы не можете дублировать ключи.
Hashtable - это в основном список без возможности дублирования (и более высокая производительность в некоторых сценариях)
Стек сохраняет объекты, чтобы они были добавлены (через Push()
), и когда вы извлекаете объект (через Pop()
), он удаляется из стека в режиме LIFO.
Очередь довольно похожа на стек, за исключением FIFO.
Вот некоторые из них для них.
Список: Если вы просто хотите список и не заботитесь о каких-либо дубликатах, например список людей, список покупок, список вещей, которые нужно делать в жизни.
Очереди: Если вы хотите имитировать очередь, например, в больнице у вас есть очередь, а также очередь приоритетов (в ветких неотложной помощи). Сортировка определит, кто находится в критическом состоянии и нуждается в лечении.
Другим примером является очередь покупок, первый человек в строке "обычно" - первый для проверки.
Стеки: Используется во внутренней памяти для нажатия и выталкивания значений при передаче им функций/методов.
Еще одно интересное использование - в способе инвентаризации видеоигр, где вы можете взять элемент (push) в стек и отбросить элемент (pop) из стека.
Хэш/Словарь: Обычно они используются в базе данных, для поиска и индекса.
В зависимости от того, что вы хотите имитировать, я согласен с другими, ему удобно читать данные-структуры. Книга помогает, но в Интернете также есть множество информации.