Подтвердить что ты не робот

Список против ArrayList vs Dictionary vs Hashtable vs Stack vs Queue?

Мы можем использовать любой из них (включая List, ArrayList, Dictionary, Hashtable, Stack, Queue) для хранения значения или ссылки на другие объекты в виде коллекции.

Но, мой вопрос, какой из них используется, когда?

4b9b3361

Ответ 1

Списки

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

  • ArrayList. Список на основе массива, который не поддерживает общие типы. Он не обеспечивает безопасность типа и, как правило, следует избегать.

  • Список. Список массивов, который поддерживает общие типы и обеспечивает безопасность типов. Так как он несмежный, он может увеличиваться по размеру без перераспределения памяти для всего списка. Это наиболее часто используемая коллекция списков.

Хэш

Хэши - это поисковые запросы, в которых вы даете каждому элементу в списке "ключ", который будет использоваться для его получения позже. Подумайте о хеше, как индекс таблицы, где вы можете задать такие вопросы, как "Я собираюсь найти этот объект по этому строковому значению. Дублировать ключи не разрешены.

  • HashTable - базовая карта пары ключ-значение, которая работает как индексированный список.

  • Словарь. Хэш-таблица, которая поддерживает общие типы и обеспечивает безопасность типов.

Очередь

Очереди контролируют доступ к элементам в списке. Вы обычно нажимаете/поп-записи из очереди в определенном направлении (либо спереди, либо назад). Не используется для случайного доступа посередине.

  • Stack - список LIFO (последний, первый раз), в котором вы нажимаете/записываете записи друг на друга.

  • Очередь - список FIFO (первый в первом списке), в котором вы нажимаете записи сверху и выкладываете их снизу.

Ответ 2

  • Список может содержать повторяющиеся объекты

  • ArrayList предназначен только для совместимости со старыми версиями фреймворка, где IList не существует

  • Словарь используется для хранения пар ключей/значений. Вы не можете дублировать ключи.

  • Hashtable - это в основном список без возможности дублирования (и более высокая производительность в некоторых сценариях)

  • Стек сохраняет объекты, чтобы они были добавлены (через Push()), и когда вы извлекаете объект (через Pop()), он удаляется из стека в режиме LIFO.

  • Очередь довольно похожа на стек, за исключением FIFO.

Ответ 3

Вот некоторые из них для них.

Список: Если вы просто хотите список и не заботитесь о каких-либо дубликатах, например список людей, список покупок, список вещей, которые нужно делать в жизни.

Очереди: Если вы хотите имитировать очередь, например, в больнице у вас есть очередь, а также очередь приоритетов (в ветких неотложной помощи). Сортировка определит, кто находится в критическом состоянии и нуждается в лечении.

Другим примером является очередь покупок, первый человек в строке "обычно" - первый для проверки.

Стеки: Используется во внутренней памяти для нажатия и выталкивания значений при передаче им функций/методов.

Еще одно интересное использование - в способе инвентаризации видеоигр, где вы можете взять элемент (push) в стек и отбросить элемент (pop) из стека.

Хэш/Словарь: Обычно они используются в базе данных, для поиска и индекса.

В зависимости от того, что вы хотите имитировать, я согласен с другими, ему удобно читать данные-структуры. Книга помогает, но в Интернете также есть множество информации.