Вопрос

Я часто использую Dictionary в C # 2.0 с первым ключом в качестве строки, содержащей уникальный идентификатор.

Я изучаю C # 3.0 +, и кажется, что теперь я могу просто использовать List и просто делать LINQ для этого объекта, чтобы получить конкретный объект (с .where ()).

Итак, если я правильно понимаю, класс Dictionary потерял свое предназначение?

Это было полезно?

Решение

нет, словарь по-прежнему более эффективен для возврата вещей при наличии ключа.

список, вам все еще нужно перебирать список, чтобы найти то, что вы хотите. Словарь выполняет поиск.

Другие советы

Если у вас просто есть список, то выбор LINQ будет сканировать каждый элемент в списке, сравнивая его с тем, который вы ищете.

Словарь, однако, вычисляет хеш-код искомой строки (возвращается методом GetHashCode). Это значение затем используется для более эффективного поиска строки. Подробнее о том, как это работает, см. В Википедии .

Если у вас более нескольких строк, начальный метод (List) начнет мучительно медленно работать.

ИМХО, словарный подход будет НАМНОГО быстрее, чем LINQ, поэтому, если у вас есть массив с большим количеством элементов, вам лучше использовать Dictionary.

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

Основываясь на базовых структурах данных, словарь по-прежнему должен обеспечивать более высокую производительность.

Документы MSDN в словаре

http://msdn.microsoft.com/en-us/library /xfhwa508.aspx

и список

http://msdn.microsoft.com/en-us/library /6sh2ey19.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top