匹配大文本文件中的字符串?

2024-02-07

我有一个字符串列表,其中包含大约 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(使用前将#替换为@)

匹配大文本文件中的字符串? 的相关文章

随机推荐

  • Excel biff5 到 biff8 转换

    我的系统使用 Apache POI 来管理一些 xls 文件 现在我有近 300 个 xls 文件 但它们似乎是旧格式 所以我得到了这个异常 提供的电子表格似乎是 Excel 5 0 7 0 BIFF5 格式 POI 仅支持 BIFF8 格
  • 遇到错误:java.lang.NoClassDefFoundError:com/google/common/collect/ImmutableList$Builder

    我是使用 EclipseIDE 和 TestNG 来使用 Selenium WebDriver 的新手 我目前正在 Eclipse 中通过 TestNG 运行此示例代码 import org openqa selenium By impor
  • 如何将 jQuery.serialize() 数据转换为 JSON 对象?

    当表单包含多个输入数组字段时 是否有更好的解决方案来转换已通过 jQuery 函数 serialize 序列化的表单数据 我希望能够将表单数据转换为 JSON 对象 以重新创建一些其他信息表 那么告诉我一个更好的方法来将序列化字符串转换为
  • .Net 中的钥匙锁

    我有一个 Azure 服务总线队列 我正在其中接收 1 到 10 条具有相同 密钥 的消息 其中一条消息需要通过长时间运行的操作来处理 完成后 数据库将被更新 其他消息将对其进行检查 但是 与此同时 其他消息将重新排队 以便进程不会丢失 但
  • 图像中的第四个通道是什么?

    使用随机生成图像时该列意味着什么np random randint img np random randint 255 size 4 4 3 dtype uint8 这将创建一个 4 x 4 像素 3 列的矩阵 img np random
  • 在 Clojure 中获取函数的参数类型提示

    我正在寻找提取函数参数的类型提示信息 但我似乎找不到访问该信息的方法 例如 假设我有以下功能 defn Double do something String a String b 5 0 拉取标签很简单 tag meta do someth
  • 这些“未定义引用 __glut*WithExit”OpenGL 链接器错误的含义是什么? [复制]

    这个问题在这里已经有答案了 原问题 警告 路过GLfloat for converting 2 of空白 glutSolidSphere GLdouble GLint 闪烁 警告 路过GLfloat for converting 3 of空
  • Swift 中多维数组的语法是什么?

    CO 粉丝 在你下结论之前 它是一个重复的 有 2 种不同风格的数组 看来我问的是不太受欢迎的一种 到目前为止 我只看到了锯齿状数组的语法 例如 Int 但我找不到任何有关平面多维数组的信息 那么类型的语法是什么 比如二维数组Ints 以及
  • 如何使用 Javascript/underscorejs 找到包含对象的数组的交集?

    我不知道如何找到这组数组的交集 name product1 light 1 name product2 light 2 name product5 light 5 name product4 light 4 name product2 li
  • 如何将数据数组导入到 Hive 表中的单独行中?

    我正在尝试将以下格式的数据导入配置单元表 identifier id 1 dataA dataA 1 identifier id 2 dataA dataA 2 我有多个这样的文件 我希望每个 在表中形成一行 这是我尝试过的 CREATE
  • 图形解析错误

    我尝试使用 python 和 igraph 库创建 graphml 文件 我可以构建 igraph 的图形对象并将其写入文件 g write graphml mygraph graphml 一切似乎都很成功 但是当我尝试使用以下命令将文件读
  • 在java中解析XML属性

    我有一个与此类似的xml
  • 为什么GD在imagedestroy()时不释放内存?

    我需要一个 PHP CLI 脚本来通过 GD 函数执行各种图像转换 图像很大 所以我需要压缩尽可能多的内存 然而 当被要求时 imagedestroy 似乎不会释放内存 考虑以下演示脚本 test php usr bin php5
  • C#中如何使用“using”捕获异常

    鉴于此代码 using var conn new SqlConnection conn Open using var cmd conn CreateCommand cmd CommandText using var reader cmd E
  • 为什么进程在 4GB 时被杀死?

    我编写了一个可以处理大量数据的程序 我的 CPU 和操作系统 Ubuntu 都是 64 位的 并且我有 4GB 的 RAM 使用 top Mem 字段 我看到该进程的内存消耗上升到 87 左右 即 3 4 GB 然后它被杀死 然后我使用 u
  • JSF h:inputText 验证和 f:ajax 渲染

    一个非常简单的 JSF 应用程序 InputText 元素分配有 Validator f ajax 用于渲染下一个元素 phoneNumber 方法是使用blur event 仅当 inputText 通过验证器且 isValid 布尔值设
  • 如何使用 Visual Studio x64 进行编译?

    我想从bat 文件在VS2008 x64 中编译 当我在 VS2008 32 位中编译时 我调用 vsvars32 bat 我需要调用什么才能在 x64 中进行编译 现在建议不要使用vsvar32 bat并使用SetEnv cmd而是设置您
  • 发现长模式

    给定一个排序的数字列表 我想找到最长的子序列 其中连续元素之间的差异呈几何级数增加 所以如果列表是 1 2 3 4 7 15 27 30 31 81 那么子序列是1 3 7 15 31 或者考虑1 2 5 6 11 15 23 41 47其
  • 检查 Javascript 数组值是否按升序排列

    假设我有一个 Javascript 整数数组 我想检查它的所有值是否都按升序排列 我想要的是将数组键保存在另一个数组中 以防算法发现一个较低 或等于 的值 不仅比较前一个值 而且还比较它之前的任何值 我所做的是这样的 arr nonvali
  • 匹配大文本文件中的字符串?

    我有一个字符串列表 其中包含大约 700 万个项目 大小为 152MB 的文本文件 我想知道实现 a 函数的最佳方法是什么 该函数接受单个字符串并返回它是否在该字符串列表中 您是否需要多次匹配此文本文件 如果是这样 我会创建一个HashSe