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