Java-解析大文本文件

标签 java parsing text

我有一个简短的问题。我正在做一个学校项目,我需要解析一个非常大的文本文件。它用于数据库类,因此我需要从文件中获取唯一的 Actor 名称,因为 Actor 将是 mysql 数据库中的主键。我已经编写了解析器并且效果很好,但当时我忘了删除重复项。所以,我决定最简单的方法是创建一个 Actor 数组列表。 (使用 ArrayList ADT)然后使用 contain() 方法检查角色名称是否在数组列表中,然后再将其打印到新的文本文件。如果是,我什么都不做,如果不是,我将它添加到 arraylist 并打印到页面。现在程序运行非常慢。在arraylist之前,大概用了5分钟。旧的 Actor 文件是 180k,没有删除重复项。到目前为止,它已经运行了 30 分钟,速度为 12k。 (这次我预计总共有 100k-150k。)

我将数组列表的大小留空,因为我不知道文件中有多少 Actor ,但至少有 1-2 百万。我正在考虑只投入 500 万美元来计算它的规模,然后检查它是否得到了所有的资金。 (只需检查最后一个 arraylist 索引,如果为空,则它没有用完空间。)这会减少时间吗,因为 arraylist 不会不断加倍并重新复制所有内容?有没有比这更快的方法?我还担心我的计算机可能会在完成之前耗尽内存。任何建议都会很棒。

(我也曾尝试在文本文件上运行“unique”命令但没有成功。 Actor 姓名每行打印 1 个。(在一列中)我在想命令可能是错误的。你如何从一个文件中删除重复项windows 或 linux 命令提示符中的文本文件列?)谢谢你,很抱歉发了这么长的帖子。我明天有期中考试,开始感到压力很大。

最佳答案

使用 Set 而不是 List,这样您就不必检查集合是否包含该元素。 Set 不允许重复。

关于Java-解析大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15873812/

相关文章:

java - 如何在 Android 中的 AsyncTask 上返回匿名列表或 ArrayList

java - 如果 hasNextInt() 没有任何内容,则扫描器 hasNextInt() 返回 true

java - 如何使文本框的第一个字符恒定或固定

c# - PPTX 样式继承

pdf - 如何在pdf中找到文本的x,y位置

java - 对 DAO 进行单元测试

python:自动打印表达式中每个组件的表示

ios - NSDateFormatter 无法解析德国日期

javascript - 为什么 "\n"在 Javascript 中是一个数字 "NaN"

javascript - 如何在 React-Native (JavaScript) 中显示更多/更少的文本