Какой самый быстрый/безопасный метод перебора HashSet?

Я все еще новичок в C#, но через сообщения на форуме заметил преимущества использования HashSet вместо a Список в особых случаях.

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

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

Я читал, что для каждого цикла на самом деле медленнее, чем для следующего, так как еще я мог бы сделать это в самом быстром из возможных методов?

Количество проверок .Contains(), которые я выполняю, определенно ухудшает мою производительность со списками, поэтому хотя бы сравнение с производительностью HashSet было бы кстати.

Редактировать: в настоящее время я использую списки, перебирая их во многих местах, и в каждом месте выполняется разный код. Чаще всего текущие списки содержат координаты точек, которые я затем использую для ссылки на двумерный массив, для которого я затем выполняю ту или иную операцию на основе критериев списка.

Если нет прямого ответа на мой вопрос, это нормально, но я предположил, что могут быть другие методы перебора HashSet, а не только цикл foreach. В настоящее время я не знаю, какие могут быть другие методы, какие преимущества они обеспечивают и т. д. Предполагая, что существуют другие методы, я также сделал предположение, что будет типичный предпочтительный метод выбора, который игнорируется только тогда, когда это не соответствует потребностям (мои потребности довольно простые).

Что касается преждевременной оптимизации, я уже знаю, что использование списков является узким местом. Как решить эту проблему, я застрял. Даже не совсем застрял, но я не хотел заново изобретать велосипед, многократно тестируя только для того, чтобы узнать, что я уже делаю это наилучшим образом (это большой проект, в который вложено более 3 месяцев, списки есть везде) , но определенно есть те, которые я не хочу дублировать, иметь много данных, не нужно хранить в каком-либо определенном порядке и т. д.).

10
задан Aleks Andreev 26 February 2018 в 19:00
поделиться