My C# программа генерирует случайные строки из заданного шаблона. Эти строки хранятся в списке. Поскольку никаких дубликатов не допускается Я делаю это так:Быстрые способы избежать дубликатов в списке <> в C#
List<string> myList = new List<string>();
for (int i = 0; i < total; i++) {
string random_string = GetRandomString(pattern);
if (!myList.Contains(random_string)) myList.Add(random_string);
}
Как вы можете себе представить, это работает отлично в течение нескольких сотен записей. Но я столкнулся с ситуацией, чтобы создать несколько миллионов строк. И с каждой добавленной строкой проверка дубликатов становится медленнее и медленнее.
Есть ли более быстрые способы избежать дубликатов?
использовать набор для избежания дубликатов –
было бы быстрее, тоже добавить их все, а затем использовать Distinct(), чтобы проверить наличие дубликатов, а затем добавить обратно число, которые были удалены? – Jonesopolis
@ Jonesy: Это похоже на то, что нужно проверить для определенного набора данных. Если это будет быстрее, тогда можно было бы взвесить эту оптимизацию производительности против обфускации, которую она добавляет к коду (что в этом случае не так уж и много). – David