Соответствие строке в файле Крупного текста?

У меня есть список строк, содержащих приблизительно 7 миллионов объектов в текстовом файле размера 152 МБ. Я задавался вопросом, что могло быть лучшим способом реализовать функцию, которая берет единственную строку и возвращается, является ли это в том списке строк.

8
задан Tasawer Khan 17 April 2013 в 13:21
поделиться

2 ответа

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

152 МБ ASCII в итоге превратятся в более 300 МБ данных Unicode в памяти - но на современных машинах памяти достаточно, поэтому хранение всего количества в HashSet приведет к очень быстрому повторному поиску. действительно.

Абсолютный самый простой способ сделать это, вероятно, - использовать File.ReadAllLines , хотя при этом будет создан массив, который затем будет отброшен - не очень хорошо для использования памяти, но, вероятно, неплохо:

HashSet<string> strings = new HashSet<string>(File.ReadAllLines("data.txt"));
...

if (strings.Contains(stringToCheck))
{
    ...
}
6
ответ дан 5 December 2019 в 18:57
поделиться

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

3
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: