我有一个字符串列表,其中包含大约 700 万个项目,大小为 152MB 的文本文件。我想知道实现 a 函数的最佳方法是什么,该函数接受单个字符串并返回它是否在该字符串列表中。
您是否需要多次匹配此文本文件?如果是这样,我会创建一个HashSet<string>
。否则,只需逐行读取它(我假设每行有一个字符串)并查看它是否匹配。
152MB 的 ASCII 最终会在内存中变成超过 300MB 的 Unicode 数据 - 但现代机器有足够的内存,因此将整个数据保存在一个HashSet<string>
确实会使重复查找变得非常快。
绝对的simplest这样做的方法可能是使用File.ReadAllLines
,虽然这将创建一个数组,然后该数组将被丢弃 - 对于内存使用来说不太好,但可能还不错:
HashSet<string> strings = new HashSet<string>(File.ReadAllLines("data.txt"));
...
if (strings.Contains(stringToCheck))
{
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)