我有一个快速的问题。我正在做一个学校项目,我需要解析一个非常大的文本文件。这是一个数据库类,所以我需要从文件中获取唯一的演员名称,因为演员将是 mysql 数据库中的主键。我已经编写了解析器并且效果很好,但当时我忘记删除重复项。所以,我决定最简单的方法是创建一个演员数组列表。(使用 ArrayList ADT)然后使用 contains() 方法检查演员名称是否在 arraylist 中,然后再将其打印到新的文本文件中。如果是我什么都不做,如果不是我将它添加到数组列表并打印到页面。现在程序运行非常缓慢。在arraylist之前,大约花了5分钟。旧的演员文件是 180k,没有删除重复项。现在它已经运行了 30 分钟,到目前为止是 12k。
我将arraylist的大小留空,因为我不知道文件中有多少个演员,但至少有1-2百万。我当时正在考虑只投入 500 万美元,然后检查它是否得到了全部。(只需检查最后一个 arraylist 索引,如果为空,它没有空间不足。)这会减少时间,因为 arraylist 不会不断加倍并重新复制所有内容吗?还有比这更快的方法吗?我还担心我的计算机在完成之前可能会耗尽内存。任何建议都会很棒。
(我也尝试在文本文件上运行“唯一”命令但没有成功。演员名称每行打印 1 个。(在一列中)我在想命令可能是错误的。如何从文本文件列中删除重复项在 Windows 或 linux 命令提示符下?)谢谢你,很抱歉这么长的帖子。我明天有期中考试,开始感到压力。